Enable strictDeps on all our toplevel packages #12
							
								
								
									
										405
									
								
								pkgs/ceph.nix
									
									
									
									
									
								
							
							
						
						
									
										405
									
								
								pkgs/ceph.nix
									
									
									
									
									
								
							@ -1,405 +0,0 @@
 | 
				
			|||||||
{ lib
 | 
					 | 
				
			||||||
, stdenv
 | 
					 | 
				
			||||||
, runCommand
 | 
					 | 
				
			||||||
, fetchurl
 | 
					 | 
				
			||||||
, fetchFromGitHub
 | 
					 | 
				
			||||||
, fetchPypi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Build time
 | 
					 | 
				
			||||||
, cmake
 | 
					 | 
				
			||||||
, ensureNewerSourcesHook
 | 
					 | 
				
			||||||
, fmt
 | 
					 | 
				
			||||||
, git
 | 
					 | 
				
			||||||
, makeWrapper
 | 
					 | 
				
			||||||
, nasm
 | 
					 | 
				
			||||||
, pkg-config
 | 
					 | 
				
			||||||
, which
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Tests
 | 
					 | 
				
			||||||
, nixosTests
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Runtime dependencies
 | 
					 | 
				
			||||||
, arrow-cpp
 | 
					 | 
				
			||||||
, babeltrace
 | 
					 | 
				
			||||||
, boost179
 | 
					 | 
				
			||||||
, bzip2
 | 
					 | 
				
			||||||
, cryptsetup
 | 
					 | 
				
			||||||
, cunit
 | 
					 | 
				
			||||||
, doxygen
 | 
					 | 
				
			||||||
, gperf
 | 
					 | 
				
			||||||
, graphviz
 | 
					 | 
				
			||||||
, gtest
 | 
					 | 
				
			||||||
, icu
 | 
					 | 
				
			||||||
, libcap
 | 
					 | 
				
			||||||
, libcap_ng
 | 
					 | 
				
			||||||
, libnl
 | 
					 | 
				
			||||||
, libxml2
 | 
					 | 
				
			||||||
, lttng-ust
 | 
					 | 
				
			||||||
, lua
 | 
					 | 
				
			||||||
, lz4
 | 
					 | 
				
			||||||
, oath-toolkit
 | 
					 | 
				
			||||||
, openldap
 | 
					 | 
				
			||||||
, python310
 | 
					 | 
				
			||||||
, rdkafka
 | 
					 | 
				
			||||||
, rocksdb
 | 
					 | 
				
			||||||
, snappy
 | 
					 | 
				
			||||||
, sqlite
 | 
					 | 
				
			||||||
, utf8proc
 | 
					 | 
				
			||||||
, zlib
 | 
					 | 
				
			||||||
, zstd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Optional Dependencies
 | 
					 | 
				
			||||||
, curl ? null
 | 
					 | 
				
			||||||
, expat ? null
 | 
					 | 
				
			||||||
, fuse ? null
 | 
					 | 
				
			||||||
, libatomic_ops ? null
 | 
					 | 
				
			||||||
, libedit ? null
 | 
					 | 
				
			||||||
, libs3 ? null
 | 
					 | 
				
			||||||
, yasm ? null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Mallocs
 | 
					 | 
				
			||||||
, gperftools ? null
 | 
					 | 
				
			||||||
, jemalloc ? null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Crypto Dependencies
 | 
					 | 
				
			||||||
, cryptopp ? null
 | 
					 | 
				
			||||||
, nspr ? null
 | 
					 | 
				
			||||||
, nss ? null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Linux Only Dependencies
 | 
					 | 
				
			||||||
, linuxHeaders
 | 
					 | 
				
			||||||
, util-linux
 | 
					 | 
				
			||||||
, libuuid
 | 
					 | 
				
			||||||
, udev
 | 
					 | 
				
			||||||
, keyutils
 | 
					 | 
				
			||||||
, rdma-core
 | 
					 | 
				
			||||||
, rabbitmq-c
 | 
					 | 
				
			||||||
, libaio ? null
 | 
					 | 
				
			||||||
, libxfs ? null
 | 
					 | 
				
			||||||
, liburing ? null
 | 
					 | 
				
			||||||
, zfs ? null
 | 
					 | 
				
			||||||
, ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# We must have one crypto library
 | 
					 | 
				
			||||||
assert cryptopp != null || (nss != null && nspr != null);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  shouldUsePkg = pkg: if pkg != null && pkg.meta.available then pkg else null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  optYasm = shouldUsePkg yasm;
 | 
					 | 
				
			||||||
  optExpat = shouldUsePkg expat;
 | 
					 | 
				
			||||||
  optCurl = shouldUsePkg curl;
 | 
					 | 
				
			||||||
  optFuse = shouldUsePkg fuse;
 | 
					 | 
				
			||||||
  optLibedit = shouldUsePkg libedit;
 | 
					 | 
				
			||||||
  optLibatomic_ops = shouldUsePkg libatomic_ops;
 | 
					 | 
				
			||||||
  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;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Downgrade rocksdb, 7.10 breaks ceph
 | 
					 | 
				
			||||||
  rocksdb' = rocksdb.overrideAttrs {
 | 
					 | 
				
			||||||
    version = "7.9.2";
 | 
					 | 
				
			||||||
    src = fetchFromGitHub {
 | 
					 | 
				
			||||||
      owner = "facebook";
 | 
					 | 
				
			||||||
      repo = "rocksdb";
 | 
					 | 
				
			||||||
      rev = "refs/tags/v7.9.2";
 | 
					 | 
				
			||||||
      hash = "sha256-5P7IqJ14EZzDkbjaBvbix04ceGGdlWBuVFH/5dpD5VM=";
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  hasRadosgw = optExpat != null && optCurl != null && optLibedit != null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Malloc implementation (can be jemalloc, tcmalloc or null)
 | 
					 | 
				
			||||||
  malloc = if optJemalloc != null then optJemalloc else optGperftools;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # We prefer nss over cryptopp
 | 
					 | 
				
			||||||
  cryptoStr = if optNss != null && optNspr != null then "nss" else
 | 
					 | 
				
			||||||
    if optCryptopp != null then "cryptopp" else "none";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  cryptoLibsMap = {
 | 
					 | 
				
			||||||
    nss = [ optNss optNspr ];
 | 
					 | 
				
			||||||
    cryptopp = [ optCryptopp ];
 | 
					 | 
				
			||||||
    none = [ ];
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  getMeta = description: with lib; {
 | 
					 | 
				
			||||||
     homepage = "https://ceph.io/en/";
 | 
					 | 
				
			||||||
     inherit description;
 | 
					 | 
				
			||||||
     license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ];
 | 
					 | 
				
			||||||
     maintainers = with maintainers; [ adev ak johanot krav ];
 | 
					 | 
				
			||||||
     platforms = [ "x86_64-linux" "aarch64-linux" ];
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ceph-common = with python.pkgs; buildPythonPackage {
 | 
					 | 
				
			||||||
    pname = "ceph-common";
 | 
					 | 
				
			||||||
    inherit src version;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sourceRoot = "ceph-${version}/src/python-common";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    propagatedBuildInputs = [
 | 
					 | 
				
			||||||
      pyyaml
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    nativeCheckInputs = [
 | 
					 | 
				
			||||||
      pytestCheckHook
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    disabledTests = [
 | 
					 | 
				
			||||||
      # requires network access
 | 
					 | 
				
			||||||
      "test_valid_addr"
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    meta = getMeta "Ceph common module for code shared by manager modules";
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Watch out for python <> boost compatibility
 | 
					 | 
				
			||||||
  python = python310.override {
 | 
					 | 
				
			||||||
    packageOverrides = self: super: {
 | 
					 | 
				
			||||||
      sqlalchemy = super.sqlalchemy.overridePythonAttrs rec {
 | 
					 | 
				
			||||||
        version = "1.4.46";
 | 
					 | 
				
			||||||
        src = fetchPypi {
 | 
					 | 
				
			||||||
          pname = "SQLAlchemy";
 | 
					 | 
				
			||||||
          inherit version;
 | 
					 | 
				
			||||||
          hash = "sha256-aRO4JH2KKS74MVFipRkx4rQM6RaB8bbxj2lwRSAMSjA=";
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        disabledTestPaths = [
 | 
					 | 
				
			||||||
          "test/aaa_profiling"
 | 
					 | 
				
			||||||
          "test/ext/mypy"
 | 
					 | 
				
			||||||
        ];
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  boost = boost179.override {
 | 
					 | 
				
			||||||
    enablePython = true;
 | 
					 | 
				
			||||||
    inherit python;
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # TODO: split this off in build and runtime environment
 | 
					 | 
				
			||||||
  ceph-python-env = python.withPackages (ps: with ps; [
 | 
					 | 
				
			||||||
    ceph-common
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # build time
 | 
					 | 
				
			||||||
    cython
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # debian/control
 | 
					 | 
				
			||||||
    bcrypt
 | 
					 | 
				
			||||||
    cherrypy
 | 
					 | 
				
			||||||
    influxdb
 | 
					 | 
				
			||||||
    jinja2
 | 
					 | 
				
			||||||
    kubernetes
 | 
					 | 
				
			||||||
    natsort
 | 
					 | 
				
			||||||
    numpy
 | 
					 | 
				
			||||||
    pecan
 | 
					 | 
				
			||||||
    prettytable
 | 
					 | 
				
			||||||
    pyjwt
 | 
					 | 
				
			||||||
    pyopenssl
 | 
					 | 
				
			||||||
    python-dateutil
 | 
					 | 
				
			||||||
    pyyaml
 | 
					 | 
				
			||||||
    requests
 | 
					 | 
				
			||||||
    routes
 | 
					 | 
				
			||||||
    scikit-learn
 | 
					 | 
				
			||||||
    scipy
 | 
					 | 
				
			||||||
    setuptools
 | 
					 | 
				
			||||||
    sphinx
 | 
					 | 
				
			||||||
    virtualenv
 | 
					 | 
				
			||||||
    werkzeug
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # src/pybind/mgr/requirements-required.txt
 | 
					 | 
				
			||||||
    cryptography
 | 
					 | 
				
			||||||
    jsonpatch
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # src/tools/cephfs/shell/setup.py
 | 
					 | 
				
			||||||
    cmd2
 | 
					 | 
				
			||||||
    colorama
 | 
					 | 
				
			||||||
  ]);
 | 
					 | 
				
			||||||
  inherit (ceph-python-env.python) sitePackages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  version = "18.2.0";
 | 
					 | 
				
			||||||
  src = fetchurl {
 | 
					 | 
				
			||||||
    url = "https://download.ceph.com/tarballs/ceph-${version}.tar.gz";
 | 
					 | 
				
			||||||
    hash = "sha256:0k9nl6xi5brva51rr14m7ig27mmmd7vrpchcmqc40q3c2khn6ns9";
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
in rec {
 | 
					 | 
				
			||||||
  ceph = stdenv.mkDerivation {
 | 
					 | 
				
			||||||
    pname = "ceph";
 | 
					 | 
				
			||||||
    inherit src version;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    nativeBuildInputs = [
 | 
					 | 
				
			||||||
      cmake
 | 
					 | 
				
			||||||
      fmt
 | 
					 | 
				
			||||||
      git
 | 
					 | 
				
			||||||
      makeWrapper
 | 
					 | 
				
			||||||
      nasm
 | 
					 | 
				
			||||||
      pkg-config
 | 
					 | 
				
			||||||
      python
 | 
					 | 
				
			||||||
      python.pkgs.python # for the toPythonPath function
 | 
					 | 
				
			||||||
      python.pkgs.wrapPython
 | 
					 | 
				
			||||||
      which
 | 
					 | 
				
			||||||
      (ensureNewerSourcesHook { year = "1980"; })
 | 
					 | 
				
			||||||
      # for building docs/man-pages presumably
 | 
					 | 
				
			||||||
      doxygen
 | 
					 | 
				
			||||||
      graphviz
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    enableParallelBuilding = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    buildInputs = cryptoLibsMap.${cryptoStr} ++ [
 | 
					 | 
				
			||||||
      arrow-cpp
 | 
					 | 
				
			||||||
      babeltrace
 | 
					 | 
				
			||||||
      boost
 | 
					 | 
				
			||||||
      bzip2
 | 
					 | 
				
			||||||
      ceph-python-env
 | 
					 | 
				
			||||||
      cryptsetup
 | 
					 | 
				
			||||||
      cunit
 | 
					 | 
				
			||||||
      gperf
 | 
					 | 
				
			||||||
      gtest
 | 
					 | 
				
			||||||
      icu
 | 
					 | 
				
			||||||
      libcap
 | 
					 | 
				
			||||||
      libnl
 | 
					 | 
				
			||||||
      libxml2
 | 
					 | 
				
			||||||
      lttng-ust
 | 
					 | 
				
			||||||
      lua
 | 
					 | 
				
			||||||
      lz4
 | 
					 | 
				
			||||||
      malloc
 | 
					 | 
				
			||||||
      oath-toolkit
 | 
					 | 
				
			||||||
      openldap
 | 
					 | 
				
			||||||
      optLibatomic_ops
 | 
					 | 
				
			||||||
      optLibs3
 | 
					 | 
				
			||||||
      optYasm
 | 
					 | 
				
			||||||
      rdkafka
 | 
					 | 
				
			||||||
      rocksdb'
 | 
					 | 
				
			||||||
      snappy
 | 
					 | 
				
			||||||
      sqlite
 | 
					 | 
				
			||||||
      utf8proc
 | 
					 | 
				
			||||||
      zlib
 | 
					 | 
				
			||||||
      zstd
 | 
					 | 
				
			||||||
    ] ++ lib.optionals stdenv.isLinux [
 | 
					 | 
				
			||||||
      keyutils
 | 
					 | 
				
			||||||
      libcap_ng
 | 
					 | 
				
			||||||
      liburing
 | 
					 | 
				
			||||||
      libuuid
 | 
					 | 
				
			||||||
      linuxHeaders
 | 
					 | 
				
			||||||
      optLibaio
 | 
					 | 
				
			||||||
      optLibxfs
 | 
					 | 
				
			||||||
      optZfs
 | 
					 | 
				
			||||||
      rabbitmq-c
 | 
					 | 
				
			||||||
      rdma-core
 | 
					 | 
				
			||||||
      udev
 | 
					 | 
				
			||||||
      util-linux
 | 
					 | 
				
			||||||
    ] ++ lib.optionals hasRadosgw [
 | 
					 | 
				
			||||||
      optCurl
 | 
					 | 
				
			||||||
      optExpat
 | 
					 | 
				
			||||||
      optFuse
 | 
					 | 
				
			||||||
      optLibedit
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    pythonPath = [ ceph-python-env "${placeholder "out"}/${ceph-python-env.sitePackages}" ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    preConfigure =''
 | 
					 | 
				
			||||||
      substituteInPlace src/common/module.c --replace "/sbin/modinfo"  "modinfo"
 | 
					 | 
				
			||||||
      substituteInPlace src/common/module.c --replace "/sbin/modprobe" "modprobe"
 | 
					 | 
				
			||||||
      substituteInPlace src/common/module.c --replace "/bin/grep" "grep"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # install target needs to be in PYTHONPATH for "*.pth support" check to succeed
 | 
					 | 
				
			||||||
      # set PYTHONPATH, so the build system doesn't silently skip installing ceph-volume and others
 | 
					 | 
				
			||||||
      export PYTHONPATH=${ceph-python-env}/${sitePackages}:$lib/${sitePackages}:$out/${sitePackages}
 | 
					 | 
				
			||||||
      patchShebangs src/
 | 
					 | 
				
			||||||
    '';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmakeFlags = [
 | 
					 | 
				
			||||||
      "-DCMAKE_INSTALL_DATADIR=${placeholder "lib"}/lib"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      "-DWITH_CEPHFS_SHELL:BOOL=ON"
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEMD:BOOL=OFF"
 | 
					 | 
				
			||||||
      # `WITH_JAEGER` requires `thrift` as a depenedncy (fine), but the build fails with:
 | 
					 | 
				
			||||||
      #     CMake Error at src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-Release.cmake:49 (message):
 | 
					 | 
				
			||||||
      #     Command failed: 2
 | 
					 | 
				
			||||||
      #
 | 
					 | 
				
			||||||
      #        'make' 'opentelemetry_trace' 'opentelemetry_exporter_jaeger_trace'
 | 
					 | 
				
			||||||
      #
 | 
					 | 
				
			||||||
      #     See also
 | 
					 | 
				
			||||||
      #
 | 
					 | 
				
			||||||
      #        /build/ceph-18.2.0/build/src/opentelemetry-cpp/src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-*.log
 | 
					 | 
				
			||||||
      # and that file contains:
 | 
					 | 
				
			||||||
      #     /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc: In member function 'virtual void opentelemetry::v1::exporter::jaeger::TUDPTransport::close()':
 | 
					 | 
				
			||||||
      #     /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc:71:7: error: '::close' has not been declared; did you mean 'pclose'?
 | 
					 | 
				
			||||||
      #       71 |     ::THRIFT_CLOSESOCKET(socket_);
 | 
					 | 
				
			||||||
      #          |       ^~~~~~~~~~~~~~~~~~
 | 
					 | 
				
			||||||
      # Looks like `close()` is somehow not included.
 | 
					 | 
				
			||||||
      # But the relevant code is already removed in `open-telemetry` 1.10: https://github.com/open-telemetry/opentelemetry-cpp/pull/2031
 | 
					 | 
				
			||||||
      # So it's proably not worth trying to fix that for this Ceph version,
 | 
					 | 
				
			||||||
      # and instead just disable Ceph's Jaeger support.
 | 
					 | 
				
			||||||
      "-DWITH_JAEGER:BOOL=OFF"
 | 
					 | 
				
			||||||
      "-DWITH_TESTS:BOOL=OFF"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # Use our own libraries, where possible
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_ARROW:BOOL=ON" # Only used if other options enable Arrow support.
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_BOOST:BOOL=ON"
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_GTEST:BOOL=ON"
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_ROCKSDB:BOOL=ON"
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_UTF8PROC:BOOL=ON"
 | 
					 | 
				
			||||||
      "-DWITH_SYSTEM_ZSTD:BOOL=ON"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # TODO breaks with sandbox, tries to download stuff with npm
 | 
					 | 
				
			||||||
      "-DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF"
 | 
					 | 
				
			||||||
      # WITH_XFS has been set default ON from Ceph 16, keeping it optional in nixpkgs for now
 | 
					 | 
				
			||||||
      ''-DWITH_XFS=${if optLibxfs != null then "ON" else "OFF"}''
 | 
					 | 
				
			||||||
    ] ++ lib.optional stdenv.isLinux "-DWITH_SYSTEM_LIBURING=ON";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    postFixup = ''
 | 
					 | 
				
			||||||
      wrapPythonPrograms
 | 
					 | 
				
			||||||
      wrapProgram $out/bin/ceph-mgr --prefix PYTHONPATH ":" "$(toPythonPath ${placeholder "out"}):$(toPythonPath ${ceph-python-env})"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # Test that ceph-volume exists since the build system has a tendency to
 | 
					 | 
				
			||||||
      # silently drop it with misconfigurations.
 | 
					 | 
				
			||||||
      test -f $out/bin/ceph-volume
 | 
					 | 
				
			||||||
    '';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    outputs = [ "out" "lib" "dev" "doc" "man" ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doCheck = false; # uses pip to install things from the internet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Takes 7+h to build with 2 cores.
 | 
					 | 
				
			||||||
    requiredSystemFeatures = [ "big-parallel" ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    meta = getMeta "Distributed storage system";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    passthru = {
 | 
					 | 
				
			||||||
      inherit version;
 | 
					 | 
				
			||||||
      tests = {
 | 
					 | 
				
			||||||
        inherit (nixosTests)
 | 
					 | 
				
			||||||
          ceph-multi-node
 | 
					 | 
				
			||||||
          ceph-single-node
 | 
					 | 
				
			||||||
          ceph-single-node-bluestore;
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ceph-client = runCommand "ceph-client-${version}" {
 | 
					 | 
				
			||||||
      meta = getMeta "Tools needed to mount Ceph's RADOS Block Devices/Cephfs";
 | 
					 | 
				
			||||||
    } ''
 | 
					 | 
				
			||||||
      mkdir -p $out/{bin,etc,${sitePackages},share/bash-completion/completions}
 | 
					 | 
				
			||||||
      cp -r ${ceph}/bin/{ceph,.ceph-wrapped,rados,rbd,rbdmap} $out/bin
 | 
					 | 
				
			||||||
      cp -r ${ceph}/bin/ceph-{authtool,conf,dencoder,rbdnamer,syn} $out/bin
 | 
					 | 
				
			||||||
      cp -r ${ceph}/bin/rbd-replay* $out/bin
 | 
					 | 
				
			||||||
      cp -r ${ceph}/sbin/mount.ceph $out/bin
 | 
					 | 
				
			||||||
      cp -r ${ceph}/sbin/mount.fuse.ceph $out/bin
 | 
					 | 
				
			||||||
      ln -s bin $out/sbin
 | 
					 | 
				
			||||||
      cp -r ${ceph}/${sitePackages}/* $out/${sitePackages}
 | 
					 | 
				
			||||||
      cp -r ${ceph}/etc/bash_completion.d $out/share/bash-completion/completions
 | 
					 | 
				
			||||||
      # wrapPythonPrograms modifies .ceph-wrapped, so lets just update its paths
 | 
					 | 
				
			||||||
      substituteInPlace $out/bin/ceph          --replace ${ceph} $out
 | 
					 | 
				
			||||||
      substituteInPlace $out/bin/.ceph-wrapped --replace ${ceph} $out
 | 
					 | 
				
			||||||
   '';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -24,12 +24,5 @@ final: prev:
 | 
				
			|||||||
    ];
 | 
					    ];
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Update ceph to 18.2.0 until it lands in nixpkgs, see:
 | 
					 | 
				
			||||||
  # https://github.com/NixOS/nixpkgs/pull/247849
 | 
					 | 
				
			||||||
  inherit (prev.callPackage ./ceph.nix {
 | 
					 | 
				
			||||||
    lua = prev.lua5_4;
 | 
					 | 
				
			||||||
    fmt = prev.fmt_8;
 | 
					 | 
				
			||||||
  }) ceph ceph-client;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  prometheus-slurm-exporter = prev.callPackage ./slurm-exporter.nix { };
 | 
					  prometheus-slurm-exporter = prev.callPackage ./slurm-exporter.nix { };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user