-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathutils.nix
More file actions
110 lines (100 loc) · 3.5 KB
/
Copy pathutils.nix
File metadata and controls
110 lines (100 loc) · 3.5 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{ pkgs, sources, customRustPlatform }:
with pkgs;
let
lmdb = callPackage ./nix/lmdb { src = sources.lmdb; };
stdenv = llvmPackages.libcxxStdenv;
linker = callPackage ./nix/static-linker.nix { inherit stdenv; };
mkDrv = { doCheck ? true, buildFeatures ? [ ]
, dontUseCargoParallelTests ? false, cargoPatches ? null
, cargoBuildFlags ? "", postUnpack ? "", outputHashes ? { }
, extraBuildInputs ? [ ], extraRustFlags ? [ ] }:
name:
let
patchedSrc = if builtins.isNull cargoPatches then
sources."${name}"
else
stdenv.mkDerivation {
inherit name;
src = sources."${name}";
phases = [ "installPhase" ];
installPhase = ''
ulimit -n 1024
cp -r $src $out
chmod -R +rw $out
cd $out
'' + lib.strings.concatLines
(builtins.map (file: "patch -p1 < ${file}") cargoPatches);
};
in (customRustPlatform.buildRustPackage {
inherit name buildFeatures doCheck dontUseCargoParallelTests
cargoBuildFlags postUnpack;
# Rust build.rs (cc-rs) would fail because cxx prints a warning?!
# The fix is to make sure it prints no warning on Darwin.
preConfigure = lib.optional stdenv.isDarwin ''
echo CXX=${pkgs.cxx-wrapper}/bin/clang++wrapper
export CXX=${pkgs.cxx-wrapper}/bin/clang++wrapper
'';
src = patchedSrc;
buildInputs = extraBuildInputs ++ [ openssl-static ];
nativeBuildInputs = [ pkg-config cmake perl protobuf ];
cargoSha256 = lib.fakeHash;
RUSTFLAGS = [ "-Lnative=${libiconv-static}/lib" "-lstatic=iconv" ]
++ lib.optionals (stdenv.isLinux) [ "-Clinker=${linker}" ]
++ extraRustFlags;
}).overrideAttrs (_: {
cargoDeps = customRustPlatform.importCargoLock {
lockFile = "${patchedSrc}/Cargo.lock";
allowBuiltinFetchGit = true;
inherit outputHashes;
};
});
in rec {
icx-proxy =
mkDrv { buildFeatures = [ "skip_body_verification" ]; } "icx-proxy";
idl2json = mkDrv { } "idl2json";
vessel = mkDrv { } "vessel";
ic-repl = mkDrv {
doCheck = !(stdenv.isAarch64 && stdenv.isLinux);
} "ic-repl";
ic-wasm = mkDrv {
doCheck = false;
buildFeatures = [ "exe" ];
dontUseCargoParallelTests = true;
} "ic-wasm";
icp-cli-network-launcher =
mkDrv { doCheck = false; } "icp-cli-network-launcher";
candid = mkDrv {
cargoPatches = [ ./nix/candid.patch ];
dontUseCargoParallelTests = true;
} "candid";
candid-extractor = mkDrv {
doCheck = false;
outputHashes = { };
} "candid-extractor";
agent-rs = mkDrv { doCheck = false; } "agent-rs";
dfx-extensions = (mkDrv {
cargoPatches = [ ./nix/dfx-extensions.patch ];
doCheck = false;
extraBuildInputs = [ lmdb.dev llvmPackages.libclang.lib ]
++ lib.optionals stdenv.isLinux [ libunwind ];
/* postUnpack = ''
pushd $sourceRoot
rm extensions/{nns,sns}/build.rs
sed -i 's/^build =.*$//' extensions/{nns,sns}/Cargo.toml*
popd
'';
*/
cargoBuildFlags = "--bin nns --bin sns";
outputHashes = {
"build-info-0.0.27" =
"sha256-SkwWwDNrTsntkNiCv6rsyTFGazhpRDnKtVzPpYLKF9U=";
"cycles-minting-canister-0.9.0" =
"sha256-kj2ISgydgZQgZA6p+AULcd/gCge4bYKqeevwaqlFSig=";
};
} "dfx-extensions").overrideAttrs (_: {
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
IC_ICRC1_ARCHIVE_WASM_PATH =
"../../ic-icrc1-0.9.0/wasm/ic-icrc1-archive.wasm.gz";
});
shell = ic-wasm;
}