mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-28 16:43:58 +00:00
197 lines
4.7 KiB
Nix
197 lines
4.7 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchzip,
|
|
rustPlatform,
|
|
fetchFromGitHub,
|
|
protobuf,
|
|
|
|
# nativeBuildInputs
|
|
cmake,
|
|
perl,
|
|
pkg-config,
|
|
darwin,
|
|
|
|
# buildInputs
|
|
openssl,
|
|
rdkafka,
|
|
apple-sdk_11,
|
|
darwinMinVersionHook,
|
|
|
|
versionCheckHook,
|
|
nix-update-script,
|
|
}:
|
|
|
|
let
|
|
fetchNpmPackage =
|
|
{
|
|
name,
|
|
version,
|
|
hash,
|
|
js_prod_file,
|
|
js_dev_file,
|
|
...
|
|
}@args:
|
|
let
|
|
package = fetchzip {
|
|
url = "https://registry.npmjs.org/${name}/-/${baseNameOf name}-${version}.tgz";
|
|
inherit hash;
|
|
};
|
|
|
|
files =
|
|
with args;
|
|
[
|
|
{
|
|
src = js_prod_file;
|
|
dst = "./src/environmentd/src/http/static/js/vendor/${name}.js";
|
|
}
|
|
{
|
|
src = js_prod_file;
|
|
dst = "./src/prof-http/src/http/static/js/vendor/${name}.js";
|
|
}
|
|
{
|
|
src = js_dev_file;
|
|
dst = "./src/environmentd/src/http/static-dev/js/vendor/${name}.js";
|
|
}
|
|
{
|
|
src = js_dev_file;
|
|
dst = "./src/prof-http/src/http/static-dev/js/vendor/${name}.js";
|
|
}
|
|
]
|
|
++ lib.optionals (args ? css_file) [
|
|
{
|
|
src = css_file;
|
|
dst = "./src/environmentd/src/http/static/css/vendor/${name}.css";
|
|
}
|
|
{
|
|
src = css_file;
|
|
dst = "./src/prof-http/src/http/static/css/vendor/${name}.css";
|
|
}
|
|
]
|
|
++ lib.optionals (args ? extra_file) [
|
|
{
|
|
src = extra_file.src;
|
|
dst = "./src/environmentd/src/http/static/${extra_file.dst}";
|
|
}
|
|
{
|
|
src = extra_file.src;
|
|
dst = "./src/prof-http/src/http/static/${extra_file.dst}";
|
|
}
|
|
];
|
|
in
|
|
lib.concatStringsSep "\n" (
|
|
lib.forEach files (
|
|
{ src, dst }:
|
|
''
|
|
mkdir -p "${dirOf dst}"
|
|
cp "${package}/${src}" "${dst}"
|
|
''
|
|
)
|
|
);
|
|
|
|
npmPackages = import ./npm_deps.nix;
|
|
in
|
|
rustPlatform.buildRustPackage rec {
|
|
pname = "materialize";
|
|
version = "0.87.2";
|
|
MZ_DEV_BUILD_SHA = "000000000000000000000000000000000000000000000000000";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "MaterializeInc";
|
|
repo = "materialize";
|
|
tag = "v${version}";
|
|
hash = "sha256-EHhN+avUxzwKU48MubiMM40W9J93yZlNqV+xeP44dl0=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
postPatch = ''
|
|
${lib.concatStringsSep "\n" (map fetchNpmPackage npmPackages)}
|
|
substituteInPlace ./misc/dist/materialized.service \
|
|
--replace-fail /usr/bin $out/bin \
|
|
--replace-fail _Materialize root
|
|
substituteInPlace ./src/catalog/build.rs \
|
|
--replace-fail '&[ ' '&["."'
|
|
'';
|
|
|
|
env = {
|
|
# needed for internal protobuf c wrapper library
|
|
PROTOC = lib.getExe protobuf;
|
|
PROTOC_INCLUDE = "${protobuf}/include";
|
|
|
|
# needed to dynamically link rdkafka
|
|
CARGO_FEATURE_DYNAMIC_LINKING = 1;
|
|
};
|
|
|
|
useFetchCargoVendor = true;
|
|
cargoHash = "sha256-+OREisZ/vw3Oi5MNCYn7u06pZKtf+2trlGyn//uAGws=";
|
|
|
|
nativeBuildInputs =
|
|
[
|
|
cmake
|
|
perl
|
|
pkg-config
|
|
rustPlatform.bindgenHook
|
|
]
|
|
# Provides the mig command used by the krb5-src build script
|
|
++ lib.optional stdenv.hostPlatform.isDarwin darwin.bootstrap_cmds;
|
|
|
|
# Needed to get openssl-sys to use pkg-config.
|
|
OPENSSL_NO_VENDOR = 1;
|
|
|
|
buildInputs =
|
|
[
|
|
openssl
|
|
rdkafka
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
# error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.13 or newer
|
|
apple-sdk_11
|
|
(darwinMinVersionHook "10.13")
|
|
];
|
|
|
|
# the check phase requires linking with rocksdb which can be a problem since
|
|
# the rust rocksdb crate is not updated very often.
|
|
doCheck = false;
|
|
|
|
# Skip tests that use the network
|
|
checkFlags = [
|
|
"--exact"
|
|
"--skip=test_client"
|
|
"--skip=test_client_errors"
|
|
"--skip=test_client_all_subjects"
|
|
"--skip=test_client_subject_and_references"
|
|
"--skip=test_no_block"
|
|
"--skip=test_safe_mode"
|
|
"--skip=test_tls"
|
|
];
|
|
|
|
cargoBuildFlags = [
|
|
"--bin=clusterd"
|
|
"--bin=environmentd"
|
|
];
|
|
|
|
postInstall = ''
|
|
install --mode=444 -D ./misc/dist/materialized.service $out/etc/systemd/system/materialized.service
|
|
'';
|
|
|
|
nativeInstallCheckInputs = [
|
|
versionCheckHook
|
|
];
|
|
versionCheckProgram = "${placeholder "out"}/bin/environmentd";
|
|
versionCheckProgramArg = [ "--version" ];
|
|
doInstallCheck = true;
|
|
|
|
passthru = {
|
|
updateScript = nix-update-script { };
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://materialize.com";
|
|
description = "Streaming SQL materialized view engine for real-time applications";
|
|
license = lib.licenses.bsl11;
|
|
platforms = lib.platforms.unix;
|
|
maintainers = with lib.maintainers; [ petrosagg ];
|
|
mainProgram = "environmentd";
|
|
};
|
|
}
|