Unverified Commit 36f54b56 authored by benaryorg's avatar benaryorg
Browse files

ceph: lib.cmake{Bool,Feature,OptionType}



Signed-off-by: default avatarbenaryorg <binary@benary.org>
parent 24b84ece
Loading
Loading
Loading
Loading
+20 −16
Original line number Diff line number Diff line
@@ -279,10 +279,13 @@ stdenv.mkDerivation {
  '';

  cmakeFlags = [
    "-DCMAKE_INSTALL_DATADIR=${placeholder "lib"}/lib"
    (lib.cmakeOptionType "path" "CMAKE_INSTALL_DATADIR" "${placeholder "lib"}/lib")

    "-DWITH_CEPHFS_SHELL:BOOL=ON"
    "-DWITH_SYSTEMD:BOOL=${if withSystemd then "ON" else "OFF"}"
    (lib.cmakeBool "WITH_CEPHFS_SHELL" true)
    (lib.cmakeBool "WITH_SYSTEMD" withSystemd)
    # Providing a type with this (as is the case with `lib.cmakeOptionType`) triggers an edge case.
    # This requires an upstream fix/patch as soon as upstream raises the minimum CMake version to 3.21 or higher.
    # See also: https://github.com/NixOS/nixpkgs/pull/494583#issuecomment-4195176699
    "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
    # `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):
@@ -302,32 +305,33 @@ stdenv.mkDerivation {
    # But the relevant code is already removed in `open-telemetry` 1.10: https://github.com/open-telemetry/opentelemetry-cpp/pull/2031
    # So it's probably 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"
    (lib.cmakeBool "WITH_JAEGER" false)
    (lib.cmakeBool "WITH_TESTS" false)

    # 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"
    (lib.cmakeBool "WITH_SYSTEM_ARROW" true) # Only used if other options enable Arrow support.
    (lib.cmakeBool "WITH_SYSTEM_BOOST" true)
    (lib.cmakeBool "WITH_SYSTEM_GTEST" true)
    (lib.cmakeBool "WITH_SYSTEM_ROCKSDB" true)
    (lib.cmakeBool "WITH_SYSTEM_UTF8PROC" true)
    (lib.cmakeBool "WITH_SYSTEM_ZSTD" true)

    # Use our own python libraries too, see:
    #     https://github.com/NixOS/nixpkgs/pull/344993#issuecomment-2391046329
    "-DCEPHADM_BUNDLED_DEPENDENCIES=none"
    (lib.cmakeFeature "CEPHADM_BUNDLED_DEPENDENCIES" "none")

    # Upstream enables UADK by default on aarch64, but not other platforms.
    # This causes issues when it tries to fetch the repository on aarch64.
    # We disable this by default on all platforms, with future PRs adding proper with<Pkg> flags.
    "-DWITH_UADK:BOOL=OFF"
    (lib.cmakeBool "WITH_UADK" false)

    # TODO breaks with sandbox, tries to download stuff with npm
    "-DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF"
    (lib.cmakeBool "WITH_MGR_DASHBOARD_FRONTEND" false)
    # 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.cmakeBool "WITH_XFS" (optLibxfs != null))
  ]
  ++ lib.optional stdenv.hostPlatform.isLinux "-DWITH_SYSTEM_LIBURING=ON";
  # TODO: investigate setting this to false on other platforms
  ++ lib.optional stdenv.hostPlatform.isLinux (lib.cmakeBool "WITH_SYSTEM_LIBURING" true);

  preBuild =
    # The legacy-option-headers target is not correctly empbedded in the build graph.