about summary refs log tree commit diff
path: root/pkgs/servers/clickhouse
diff options
context:
space:
mode:
authorYureka <yuka@yuka.dev>2023-05-18 14:41:03 +0200
committerYt <happysalada@tuta.io>2023-05-19 06:29:08 -0400
commitb0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f (patch)
treedac5370c025d7e6aabddc8225be534185ce79527 /pkgs/servers/clickhouse
parent35f44ec33076109ba47666d2bdfec31588aa3604 (diff)
downloadnixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar.gz
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar.bz2
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar.lz
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar.xz
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.tar.zst
nixlib-b0cc16f9e2dad4e2962ef36e7a92fe4b2cd91c9f.zip
clickhouse: build rust parts
Diffstat (limited to 'pkgs/servers/clickhouse')
-rw-r--r--pkgs/servers/clickhouse/default.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/pkgs/servers/clickhouse/default.nix b/pkgs/servers/clickhouse/default.nix
index cab0ca1c2964..fcee2e420656 100644
--- a/pkgs/servers/clickhouse/default.nix
+++ b/pkgs/servers/clickhouse/default.nix
@@ -7,6 +7,14 @@
 , perl
 , yasm
 , nixosTests
+
+# currently for BLAKE3 hash function
+, rustSupport ? true
+
+, corrosion
+, rustc
+, cargo
+, rustPlatform
 }:
 
 stdenv.mkDerivation rec {
@@ -29,8 +37,52 @@ stdenv.mkDerivation rec {
     perl
   ] ++ lib.optionals stdenv.isx86_64 [
     yasm
+  ] ++ lib.optionals rustSupport [
+    rustc
+    cargo
+    rustPlatform.cargoSetupHook
   ];
 
+  corrosionDeps = if rustSupport then corrosion.cargoDeps else null;
+  blake3Deps = if rustSupport then rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "blake3-deps";
+    preBuild = "cd rust/BLAKE3";
+    hash = "sha256-lDMmmsyjEbTfI5NgTgT4+8QQrcUE/oUWfFgj1i19W0Q=";
+  } else null;
+  skimDeps = if rustSupport then rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "skim-deps";
+    preBuild = "cd rust/skim";
+    hash = "sha256-gEWB+U8QrM0yYyMXpwocszJZgOemdTlbSzKNkS0NbPk=";
+  } else null;
+
+  dontCargoSetupPostUnpack = true;
+  postUnpack = lib.optionalString rustSupport ''
+    pushd source
+
+    # their vendored version is too old and missing this patch: https://github.com/corrosion-rs/corrosion/pull/205
+    rm -rf contrib/corrosion
+    cp -r --no-preserve=mode ${corrosion.src} contrib/corrosion
+
+    pushd contrib/corrosion/generator
+    cargoDeps="$corrosionDeps" cargoSetupPostUnpackHook
+    corrosionDepsCopy="$cargoDepsCopy"
+    popd
+
+    pushd rust/BLAKE3
+    cargoDeps="$blake3Deps" cargoSetupPostUnpackHook
+    blake3DepsCopy="$cargoDepsCopy"
+    popd
+
+    pushd rust/skim
+    cargoDeps="$skimDeps" cargoSetupPostUnpackHook
+    skimDepsCopy="$cargoDepsCopy"
+    popd
+
+    popd
+  '';
+
   postPatch = ''
     patchShebangs src/
 
@@ -44,6 +96,21 @@ stdenv.mkDerivation rec {
       --replace 'git rev-parse --show-toplevel' '$src'
     substituteInPlace utils/check-style/check-style \
       --replace 'git rev-parse --show-toplevel' '$src'
+  '' + lib.optionalString rustSupport ''
+
+    pushd contrib/corrosion/generator
+    cargoDepsCopy="$corrosionDepsCopy" cargoSetupPostPatchHook
+    popd
+
+    pushd rust/BLAKE3
+    cargoDepsCopy="$blake3DepsCopy" cargoSetupPostPatchHook
+    popd
+
+    pushd rust/skim
+    cargoDepsCopy="$skimDepsCopy" cargoSetupPostPatchHook
+    popd
+
+    cargoSetupPostPatchHook() { true; }
   '';
 
   cmakeFlags = [