about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/clickhouse
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
commit99fcaeccb89621dd492203ce1f2d551c06f228ed (patch)
tree41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/servers/clickhouse
parent59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff)
parent75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff)
downloadnixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/nixos/modules/config/console.nix
	nixpkgs/nixos/modules/services/mail/mailman.nix
	nixpkgs/nixos/modules/services/mail/public-inbox.nix
	nixpkgs/nixos/modules/services/mail/rss2email.nix
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/interpreters/python/default.nix
	nixpkgs/pkgs/development/node-packages/overrides.nix
	nixpkgs/pkgs/development/tools/b4/default.nix
	nixpkgs/pkgs/servers/dict/dictd-db.nix
	nixpkgs/pkgs/servers/mail/public-inbox/default.nix
	nixpkgs/pkgs/tools/security/pinentry/default.nix
	nixpkgs/pkgs/tools/text/unoconv/default.nix
	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/servers/clickhouse')
-rw-r--r--nixpkgs/pkgs/servers/clickhouse/default.nix138
1 files changed, 113 insertions, 25 deletions
diff --git a/nixpkgs/pkgs/servers/clickhouse/default.nix b/nixpkgs/pkgs/servers/clickhouse/default.nix
index 793ee917966c..758acecc93ec 100644
--- a/nixpkgs/pkgs/servers/clickhouse/default.nix
+++ b/nixpkgs/pkgs/servers/clickhouse/default.nix
@@ -1,32 +1,101 @@
-{ lib, stdenv, fetchFromGitHub, cmake, libtool, llvm-bintools, ninja
-, boost, brotli, capnproto, cctz, clang-unwrapped, double-conversion
-, icu, jemalloc, libcpuid, libxml2, lld, llvm, lz4, libmysqlclient, openssl, perl
-, poco, protobuf, python3, rapidjson, re2, rdkafka, readline, sparsehash, unixODBC
-, xxHash, zstd
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, ninja
+, python3
+, perl
+, yasm
 , nixosTests
+
+# currently for BLAKE3 hash function
+, rustSupport ? true
+
+, corrosion
+, rustc
+, cargo
+, rustPlatform
 }:
 
 stdenv.mkDerivation rec {
   pname = "clickhouse";
-  version = "22.3.2.2";
-
-  broken = stdenv.buildPlatform.is32bit; # not supposed to work on 32-bit https://github.com/ClickHouse/ClickHouse/pull/23959#issuecomment-835343685
+  version = "23.3.2.37";
 
-  src = fetchFromGitHub {
-    owner  = "ClickHouse";
-    repo   = "ClickHouse";
-    rev    = "v${version}-lts";
+  src = fetchFromGitHub rec {
+    owner = "ClickHouse";
+    repo = "ClickHouse";
+    rev = "v${version}-lts";
     fetchSubmodules = true;
-    sha256 = "0rhzgm0gvwpx4h5xyr7y393y7s9slcr4a7grw9316f5m70frxg2v";
+    hash = "sha256-G/5KZ4vd9w5g0yB6bzyM8VX3l32Di+a6Ll87NK3GOrg=";
+    name = "clickhouse-${rev}.tar.gz";
+    postFetch = ''
+      # compress to not exceed the 4GB output limit
+      # try to make a deterministic tarball
+      tar -I 'gzip -n' \
+        --sort=name \
+        --mtime=1970-01-01 \
+        --owner=root --group=root \
+        --numeric-owner --mode=go=rX,u+rw,a-s \
+        --transform='s@^@source/@S' \
+        -cf temp  -C "$out" .
+      rm -r "$out"
+      mv temp "$out"
+    '';
   };
 
-  nativeBuildInputs = [ cmake libtool llvm-bintools ninja ];
-  buildInputs = [
-    boost brotli capnproto cctz clang-unwrapped double-conversion
-    icu jemalloc libxml2 lld llvm lz4 libmysqlclient openssl perl
-    poco protobuf python3 rapidjson re2 rdkafka readline sparsehash unixODBC
-    xxHash zstd
-  ] ++ lib.optional stdenv.hostPlatform.isx86 libcpuid;
+  strictDeps = true;
+  nativeBuildInputs = [
+    cmake
+    ninja
+    python3
+    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/
@@ -41,12 +110,28 @@ 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 = [
     "-DENABLE_TESTS=OFF"
+    "-DENABLE_CCACHE=0"
     "-DENABLE_EMBEDDED_COMPILER=ON"
-    "-USE_INTERNAL_LLVM_LIBRARY=OFF"
+    "-DWERROR=OFF"
   ];
 
   postInstall = ''
@@ -56,20 +141,23 @@ stdenv.mkDerivation rec {
       $out/etc/clickhouse-server/config.xml
     substituteInPlace $out/etc/clickhouse-server/config.xml \
       --replace "<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>" "<console>1</console>"
+    substituteInPlace $out/etc/clickhouse-server/config.xml \
+      --replace "<level>trace</level>" "<level>warning</level>"
   '';
 
-  hardeningDisable = [ "format" ];
-
   # Builds in 7+h with 2 cores, and ~20m with a big-parallel builder.
   requiredSystemFeatures = [ "big-parallel" ];
 
   passthru.tests.clickhouse = nixosTests.clickhouse;
 
   meta = with lib; {
-    homepage = "https://clickhouse.tech/";
+    homepage = "https://clickhouse.com";
     description = "Column-oriented database management system";
     license = licenses.asl20;
     maintainers = with maintainers; [ orivej ];
-    platforms = platforms.linux;
+
+    # not supposed to work on 32-bit https://github.com/ClickHouse/ClickHouse/pull/23959#issuecomment-835343685
+    platforms = lib.filter (x: (lib.systems.elaborate x).is64bit) platforms.linux;
+    broken = stdenv.buildPlatform != stdenv.hostPlatform;
   };
 }