1- _ : {
1+ _ :
2+ let
3+ # TODO: populate when needed
4+ hashes = {
5+ "1.5.2" = {
6+ "x86_64-linux" = "sha256-5mCjjvspMLNO5vawuxJzCtzLBAtqtwG4+C80RTpCauc=" ;
7+ "aarch64-linux" = "sha256-54siTBWWSBejt1pA5ZiCtNDgb9BVs5UU1hZGaJzvjG4=" ;
8+ "aarch64-darwin" = "" ;
9+ } ;
10+ "2.1.2" = {
11+ "x86_64-linux" = "sha256-WOH2v6ie45DLmrxppbwSYCmkl/4J3TmfOKgtDYb+le8=" ;
12+ "aarch64-linux" = "sha256-CIHFtGPoniKbBjcOnilhrsClxjZ3LVFCxo01FWRGSmY=" ;
13+ "aarch64-darwin" = "" ;
14+ } ;
15+ "2.1.3" = {
16+ "x86_64-linux" = "sha256-jasIQ0pf5Xpvu8uAQXlLw8MYRtMfj/X7NT7nTg/NMJM=" ;
17+ "aarch64-linux" = "sha256-+upOFTkOBG0sqEQcIaiNulb5oDY/ksXZQBXfCsbaHy0=" ;
18+ "aarch64-darwin" = "" ;
19+ } ;
20+ "2.2.1" = {
21+ "x86_64-linux" = "sha256-s711XvrA/znAG1m4EQ+WHEiqPrk1iAcdemKCcMwfIyY=" ;
22+ "aarch64-linux" = "sha256-umy122sUomXIVWMmwEWICQjbmx0v+11KqfCawJskzsw=" ;
23+ "aarch64-darwin" = "" ;
24+ } ;
25+ } ;
26+ in
27+ {
228 perSystem =
329 {
430 pkgs ,
@@ -12,144 +38,33 @@ _: {
1238 ...
1339 } :
1440 let
15- throwBadSystem = throw "libwasmvm cannot be built on system `${ system } `" ;
16-
17- CARGO_BUILD_TARGET =
18- if system == "aarch64-linux" then
19- "aarch64-unknown-linux-musl"
20- else if system == "x86_64-linux" then
21- "x86_64-unknown-linux-musl"
22- else if system == "aarch64-darwin" then
23- "aarch64-apple-darwin"
24- else if system == "x86_64-darwin" then
25- "x86_64-apple-darwin"
26- else
27- throwBadSystem ;
28-
29- rustToolchain-2024-01-27 = rust . mkNightly {
30- channel = "nightly-2024-01-27" ;
31- targets = [ CARGO_BUILD_TARGET ] ;
32- } ;
33- rustToolchain-1-77 = rust . mkNightly {
34- channel = "1.77.0" ;
35- targets = [ CARGO_BUILD_TARGET ] ;
36- } ;
37- rustToolchain-1-82 = rust . mkNightly {
38- channel = "1.82.0" ;
39- targets = [ CARGO_BUILD_TARGET ] ;
40- } ;
41-
42- mkLibwasmvm_v1 =
43- wasmvm :
41+ fetchReleaseArtifact =
42+ { version } :
4443 let
45- attrs =
46- {
47- inherit CARGO_BUILD_TARGET ;
48- pname = "libwasmvm" ;
49- version = wasmvm . rev ;
50- buildInputs = [ rustToolchain-2024-01-27 ] ;
51- src = "${ wasmvm } /libwasmvm" ;
52- installCargoArtifactsMode = "use-zstd" ;
53- }
54- // (
55- if pkgs . stdenv . isLinux then
56- {
57- cargoExtraArgs = "--locked --offline --example=wasmvmstatic" ;
58- installPhaseCommand = ''
59- mkdir -p $out/lib
60- mv target/${ CARGO_BUILD_TARGET } /release/examples/libwasmvmstatic.a $out/lib/libwasmvm.${ builtins . head ( pkgs . lib . strings . splitString "-" system ) } .a
61- '' ;
62- }
63- else if pkgs . stdenv . isDarwin then
64- {
65- # non-static dylib build on macOS
66- cargoExtraArgs = "--locked --offline" ;
67- installPhaseCommand = ''
68- mkdir -p $out/lib
69- mv target/${ CARGO_BUILD_TARGET } /release/deps/libwasmvm.dylib $out/lib/libwasmvm.dylib
70- '' ;
71- }
72- else
73- throwBadSystem
74- ) ;
75- craneLib = crane . lib . overrideToolchain rustToolchain-2024-01-27 ;
44+ prefix = builtins . head ( pkgs . lib . strings . splitString "-" system ) ;
45+ artifact = pkgs . fetchurl {
46+ # TODO: incompatible with darwin we need to cut the `muslc` prefix
47+ url = "https://github.com/CosmWasm/wasmvm/releases/download/v${ version } /libwasmvm_muslc.${ prefix } .a" ;
48+ hash = hashes . ${ version } . ${ system } ;
49+ } ;
7650 in
77- craneLib . buildPackage (
78- attrs
79- // {
80- cargoArtifacts = craneLib . buildDepsOnly attrs ;
81- }
82- ) ;
83- mkLibwasmvm_v2 =
84- wasmvm : rustToolChain :
85- let
86- attrs =
87- {
88- inherit CARGO_BUILD_TARGET ;
89- pname = "libwasmvm" ;
90- version = wasmvm . rev ;
91- buildInputs = [ rustToolChain ] ;
92- src = "${ wasmvm } /libwasmvm" ;
93- installCargoArtifactsMode = "use-zstd" ;
94- }
95- // (
96- if pkgs . stdenv . isLinux then
97- {
98- cargoExtraArgs = "--locked --offline --example=wasmvmstatic" ;
99- installPhaseCommand = ''
100- mkdir -p $out/lib
101- mv target/${ CARGO_BUILD_TARGET } /release/examples/libwasmvmstatic.a $out/lib/libwasmvm.${ builtins . head ( pkgs . lib . strings . splitString "-" system ) } .a
102- '' ;
103- }
104- else if pkgs . stdenv . isDarwin then
105- {
106- # non-static dylib build on macOS
107- cargoExtraArgs = "--locked --offline" ;
108- installPhaseCommand = ''
109- mkdir -p $out/lib
110- mv target/${ CARGO_BUILD_TARGET } /release/deps/libwasmvm.dylib $out/lib/libwasmvm.dylib
111- '' ;
112- }
113- else
114- throwBadSystem
115- ) ;
116- craneLib = crane . lib . overrideToolchain rustToolChain ;
117- in
118- craneLib . buildPackage (
119- attrs
120- // {
121- cargoArtifacts = craneLib . buildDepsOnly attrs ;
122- }
123- ) ;
124- wasmvm-1_5_2 = pkgs . fetchFromGitHub {
125- owner = "CosmWasm" ;
126- repo = "wasmvm" ;
127- rev = "v1.5.2" ;
128- hash = "sha256-3KJq5jFllFSqlm85/iRWYMhu99iuokvR3Ib9Gq3gIjc=" ;
51+ pkgs . runCommand "libwasmvm-${ version } -${ system } " { } ''
52+ mkdir -p $out/lib
53+ cp ${ artifact } $out/lib/libwasmvm.${ prefix } .a
54+ '' ;
55+ in
56+ {
57+ packages . libwasmvm-1_5_2 = fetchReleaseArtifact {
58+ version = "1.5.2" ;
12959 } ;
130- wasmvm-2_1_2 = pkgs . fetchFromGitHub {
131- owner = "CosmWasm" ;
132- repo = "wasmvm" ;
133- rev = "v2.1.2" ;
134- hash = "sha256-Y3BVRR2T5MLOtXdPK38W8MX8etIuqGcTjvxkaEOyvVM=" ;
60+ packages . libwasmvm-2_1_2 = fetchReleaseArtifact {
61+ version = "2.1.2" ;
13562 } ;
136- wasmvm-2_1_3 = pkgs . fetchFromGitHub {
137- owner = "CosmWasm" ;
138- repo = "wasmvm" ;
139- rev = "v2.1.3" ;
140- hash = "sha256-gYrK2EHhXnearJgLX38O6NLI6TfoGtpzA9be/7S/0ZU=" ;
63+ packages . libwasmvm-2_1_3 = fetchReleaseArtifact {
64+ version = "2.1.3" ;
14165 } ;
142- wasmvm-2_2_1 = pkgs . fetchFromGitHub {
143- owner = "CosmWasm" ;
144- repo = "wasmvm" ;
145- rev = "v2.2.1" ;
146- hash = "sha256-HA/YPdE1yy2/vfiQWOTE0z75agYZL/kWTvpXKyKbfLk=" ;
66+ packages . libwasmvm-2_2_1 = fetchReleaseArtifact {
67+ version = "2.2.1" ;
14768 } ;
148- in
149- {
150- packages . libwasmvm-1_5_2 = mkLibwasmvm_v1 wasmvm-1_5_2 ;
151- packages . libwasmvm-2_1_2 = mkLibwasmvm_v2 wasmvm-2_1_2 rustToolchain-1-77 ;
152- packages . libwasmvm-2_1_3 = mkLibwasmvm_v2 wasmvm-2_1_3 rustToolchain-1-82 ;
153- packages . libwasmvm-2_2_1 = mkLibwasmvm_v2 wasmvm-2_2_1 rustToolchain-1-82 ;
15469 } ;
15570}
0 commit comments