forked from MinaProtocol/mina
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript.nix
More file actions
84 lines (81 loc) · 3.34 KB
/
javascript.nix
File metadata and controls
84 lines (81 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
final: prev:
let
inherit (final)
pkgs stdenv writeScript nix-npm-buildPackage ocamlPackages_mina plonk_wasm;
in {
client_sdk = nix-npm-buildPackage.buildYarnPackage {
name = "client_sdk";
src = ../frontend/client_sdk;
yarnPostLink = writeScript "yarn-post-link" ''
#!${stdenv.shell}
ls node_modules/bs-platform/lib/*.linux
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${stdenv.cc.cc.lib}/lib" \
./node_modules/bs-platform/lib/*.linux ./node_modules/bs-platform/vendor/ninja/snapshot/*.linux ./node_modules/gentype/vendor-linux/gentype.exe
'';
yarnBuildMore = ''
cp ${ocamlPackages_mina.mina_client_sdk}/share/client_sdk/client_sdk.bc.js src
yarn build
'';
installPhase = ''
mkdir -p $out/share/client_sdk
mv src/*.js $out/share/client_sdk
'';
};
snarky_js = nix-npm-buildPackage.buildNpmPackage {
src = ../src/lib/snarkyjs;
preBuild = ''
BINDINGS_PATH=./src/bindings/compiled/node_bindings
mkdir -p "$BINDINGS_PATH"
cp ${plonk_wasm}/nodejs/plonk_wasm* "$BINDINGS_PATH"
cp ${ocamlPackages_mina.mina_client_sdk}/share/snarkyjs_bindings/snarky_js_node*.js "$BINDINGS_PATH"
chmod -R 777 "$BINDINGS_PATH"
# TODO: deduplicate from ./scripts/build-snarkyjs-node.sh
# better error messages
# TODO: find a less hacky way to make adjustments to jsoo compiler output
# `s` is the jsoo representation of the error message string, and `s.c` is the actual JS string
sed -i 's/function failwith(s){throw \[0,Failure,s\]/function failwith(s){throw joo_global_object.Error(s.c)/' "$BINDINGS_PATH"/snarky_js_node.bc.js
sed -i 's/function invalid_arg(s){throw \[0,Invalid_argument,s\]/function invalid_arg(s){throw joo_global_object.Error(s.c)/' "$BINDINGS_PATH"/snarky_js_node.bc.js
sed -i 's/return \[0,Exn,t\]/return joo_global_object.Error(t.c)/' "$BINDINGS_PATH"/snarky_js_node.bc.js
'';
npmBuild = "npm run build";
};
# Jobs/Release/LeaderboardArtifact
leaderboard = nix-npm-buildPackage.buildYarnPackage {
src = ../frontend/leaderboard;
yarnBuildMore = "yarn build";
# fix reason
yarnPostLink = writeScript "yarn-post-link" ''
#!${stdenv.shell}
ls node_modules/bs-platform/lib/*.linux
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${stdenv.cc.cc.lib}/lib" \
./node_modules/bs-platform/lib/*.linux ./node_modules/bs-platform/vendor/ninja/snapshot/*.linux
'';
# todo: external stdlib @rescript/std
preInstall = ''
shopt -s extglob
rm -rf node_modules/bs-platform/lib/!(js)
rm -rf node_modules/bs-platform/!(lib)
rm -rf yarn-cache
'';
};
zkapp-cli = nix-npm-buildPackage.buildNpmPackage {
src = pkgs.fetchFromGitHub {
owner = "o1-labs";
repo = "zkapp-cli";
rev = "b6542ccca0ce94d61c29edf519cd0eecaf9332fb";
sha256 = "sha256-R1Pb1OcjzvuJ0t/7+tq+QDke7E9aRmNmUxbR7QtVJOE=";
};
doCheck = true;
preInstall = "npm prune";
dontNpmPrune = true; # running npm prune --production removes husky which seems actually needed
postInstall = ''
ln -s $out/src/bin/index.js $out/bin/zk
ln -s $out/src/bin/index.js $out/bin/zkapp
ln -s $out/src/bin/index.js $out/bin/zkapp-cli
'';
};
}