diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
commit | 99fcaeccb89621dd492203ce1f2d551c06f228ed (patch) | |
tree | 41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/servers/clickhouse | |
parent | 59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff) | |
parent | 75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff) | |
download | nixlib-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.nix | 138 |
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; }; } |