git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #118685 from petrosagg/add-materialize
commit5280218da0d04a9a0408b4060e43bf0085194af3 authorSandro <sandro.jaeckel@gmail.com> dateWed 14 Apr 2021, 18:34 (6 years ago) parent912e11af8c1312
4 files changed+164
maintainers/maintainer-list.nix+6 pkgs/servers/sql/materialize/default.nix+91 pkgs/servers/sql/materialize/npm_deps.nix+62 pkgs/top-level/all-packages.nix+5
maintainers/maintainer-list.nix+6
@@ -7569,6 +7569,12 @@
75697569 githubId = 28323;
75707570 name = "Peter Simons";
75717571 };
7572+ petrosagg = {
7573+ email = "petrosagg@gmail.com";
7574+ github = "petrosagg";
7575+ githubId = 939420;
7576+ name = "Petros Angelatos";
7577+ };
75727578 petterstorvik = {
75737579 email = "petterstorvik@gmail.com";
75747580 github = "storvik";
pkgs/servers/sql/materialize/default.nixnew file+91
@@ -0,0 +1,91 @@
1+{ stdenv
2+, lib
3+, fetchFromGitHub
4+, fetchzip
5+, rustPlatform
6+, bootstrap_cmds
7+, DiskArbitration
8+, Foundation
9+, cmake
10+, libiconv
11+, openssl
12+, perl
13+, pkg-config}:
14+
15+let
16+ fetchNpmPackage = {name, version, hash, js_prod_file, js_dev_file, ...} @ args:
17+ let
18+ package = fetchzip {
19+ url = "https://registry.npmjs.org/${name}/-/${baseNameOf name}-${version}.tgz";
20+ inherit hash;
21+ };
22+
23+ static = "./src/materialized/src/http/static";
24+ cssVendor = "./src/materialized/src/http/static/css/vendor";
25+ jsProdVendor = "./src/materialized/src/http/static/js/vendor";
26+ jsDevVendor = "./src/materialized/src/http/static-dev/js/vendor";
27+
28+ files = with args; [
29+ { src = js_prod_file; dst = "${jsProdVendor}/${name}.js"; }
30+ { src = js_dev_file; dst = "${jsDevVendor}/${name}.js"; }
31+ ] ++ lib.optional (args ? css_file) { src = css_file; dst = "${cssVendor}/${name}.css"; }
32+ ++ lib.optional (args ? extra_file) { src = extra_file.src; dst = "${static}/${extra_file.dst}"; };
33+ in
34+ lib.concatStringsSep "\n" (lib.forEach files ({src, dst}: ''
35+ mkdir -p "${dirOf dst}"
36+ cp "${package}/${src}" "${dst}"
37+ ''));
38+
39+ npmPackages = import ./npm_deps.nix;
40+in
41+rustPlatform.buildRustPackage rec {
42+ pname = "materialize";
43+ version = "0.7.1";
44+ rev = "f4bd159fa73d37d44f8ed3f1db13c0c2ff85566f";
45+
46+ src = fetchFromGitHub {
47+ owner = "MaterializeInc";
48+ repo = pname;
49+ inherit rev;
50+ hash = "sha256-8nonB/KRv4qOGvJhh0v3UwlBzAXfzb3afeCm/7/E0AU=";
51+ };
52+
53+ cargoSha256 = "sha256-5slgICqLZFqxPymgHvq98BtcD70hfJMr36pvAoQKEJ4=";
54+
55+ nativeBuildInputs = [ cmake perl pkg-config ]
56+ # Provides the mig command used by the krb5-src build script
57+ ++ lib.optional stdenv.isDarwin bootstrap_cmds;
58+
59+ buildInputs = [ openssl ]
60+ ++ lib.optionals stdenv.isDarwin [ libiconv DiskArbitration Foundation ];
61+
62+ # Skip tests that use the network
63+ checkFlags = [
64+ "--exact"
65+ "--skip test_client"
66+ "--skip test_client_errors"
67+ "--skip test_no_block"
68+ ];
69+
70+ postPatch = ''
71+ ${lib.concatStringsSep "\n" (map fetchNpmPackage npmPackages)}
72+ substituteInPlace ./misc/dist/materialized.service \
73+ --replace /usr/bin $out/bin \
74+ --replace _Materialize root
75+ '';
76+
77+ MZ_DEV_BUILD_SHA = rev;
78+ cargoBuildFlags = [ "--package materialized" ];
79+
80+ postInstall = ''
81+ install --mode=444 -D ./misc/dist/materialized.service $out/etc/systemd/system/materialized.service
82+ '';
83+
84+ meta = with lib; {
85+ homepage = "https://materialize.com";
86+ description = "A streaming SQL materialized view engine for real-time applications";
87+ license = licenses.bsl11;
88+ platforms = [ "x86_64-linux" "x86_64-darwin" ];
89+ maintainers = [ maintainers.petrosagg ];
90+ };
91+}
pkgs/servers/sql/materialize/npm_deps.nixnew file+62
@@ -0,0 +1,62 @@
1+# materialized doesn't use npm to pull in its few node dependencies but instead
2+# manually pulls the tar archives for each package and pulls out a couple of
3+# files.
4+#
5+# The list of modules can be found in this file
6+# https://github.com/MaterializeInc/materialize/blob/master/src/materialized/build/npm.rs
7+[
8+ {
9+ name = "@hpcc-js/wasm";
10+ version = "0.3.14";
11+ hash = "sha256-EsbuFk9qtlm9yWpG29RnqVAHrP0rk3xyibQLy8qgRT4=";
12+ js_prod_file = "dist/index.min.js";
13+ js_dev_file = "dist/index.js";
14+ extra_file = {
15+ src = "dist/graphvizlib.wasm";
16+ dst = "js/vendor/@hpcc-js/graphvizlib.wasm";
17+ };
18+ }
19+ {
20+ name = "babel-standalone";
21+ version = "6.26.0";
22+ hash = "sha256-zdeTj4aOEzWvrnh90T80jL+RD8qg8PaeG0Ceua82Dz4=";
23+ js_prod_file = "babel.min.js";
24+ js_dev_file = "babel.js";
25+ }
26+ {
27+ name = "d3";
28+ version = "5.16.0";
29+ hash = "sha256-aQQRhnJxV5/9C+cQslctP3v/AePGfbSw8L3chObJzK4=";
30+ js_prod_file = "dist/d3.min.js";
31+ js_dev_file = "dist/d3.js";
32+ }
33+ {
34+ name = "d3-flame-graph";
35+ version = "3.1.1";
36+ hash = "sha256-Ls3MqALr6+/A+n8jqFw7frIB++6d1W3lAXKU0qFZ2ok=";
37+ css_file = "dist/d3-flamegraph.css";
38+ js_prod_file = "dist/d3-flamegraph.min.js";
39+ js_dev_file = "dist/d3-flamegraph.js";
40+ }
41+ {
42+ name = "pako";
43+ version = "1.0.11";
44+ hash = "sha256-St7nKpcYlJQl8qMmPkEHwmTufOHAeZK4lBZHo8VRXLA=";
45+ js_prod_file = "dist/pako.min.js";
46+ js_dev_file = "dist/pako.js";
47+ }
48+ {
49+ name = "react";
50+ version = "16.14.0";
51+ hash = "sha256-X/8Bc4XvC8IqQWbW/PCRJQpmOBI/0AZT/hSFBf/uJU8=";
52+ js_prod_file = "umd/react.production.min.js";
53+ js_dev_file = "umd/react.development.js";
54+ }
55+ {
56+ name = "react-dom";
57+ version = "16.14.0";
58+ hash = "sha256-2mYm9dwBFrWws6CB5bL6ghROTzX84RLM31hdnEbhG10=";
59+ js_prod_file = "umd/react-dom.production.min.js";
60+ js_dev_file = "umd/react-dom.development.js";
61+ }
62+]
pkgs/top-level/all-packages.nix+5
@@ -18553,6 +18553,11 @@ in
1855318553 nodejs-slim = nodejs-slim-12_x;
1855418554 };
1855518555
18556+ materialize = callPackage ../servers/sql/materialize {
18557+ inherit (buildPackages.darwin) bootstrap_cmds;
18558+ inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation;
18559+ };
18560+
1855618561 mattermost = callPackage ../servers/mattermost { };
1855718562 matterircd = callPackage ../servers/mattermost/matterircd.nix { };
1855818563 matterbridge = callPackage ../servers/matterbridge { };