summaryrefslogtreecommitdiffstats
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)
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 = [