Skip to content

Commit 4d603d3

Browse files
committed
Solving Rust local dependencies
1 parent 9fb8adb commit 4d603d3

File tree

5 files changed

+126
-64
lines changed

5 files changed

+126
-64
lines changed

runtimes/rust/lbr-prelude-derive/Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

runtimes/rust/lbr-prelude-derive/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ syn = { version = "2.0.38", features = ["extra-traits"] }
1313
trybuild = { version = "1.0.49", features = ["diff"] }
1414

1515
[dev-dependencies]
16-
lbr-prelude = { path = "../lbr-prelude", default-features = false }
16+
lbr-prelude = { version = "0.1.0", path = "../lbr-prelude", default-features = false }
1717
num-bigint = "0.4.4"
1818
serde_json = "1.0.107"
Lines changed: 57 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,67 @@
11
{ inputs, ... }: {
22
perSystem = { self', pkgs, system, ... }:
33
let
4-
crateName = "lbr-prelude-derive";
5-
rustWithTools = pkgs.rust-bin.stable.latest.default.override {
6-
extensions = [ "rustfmt" "rust-analyzer" "clippy" ];
7-
};
8-
craneLib = inputs.crane.lib.${system}.overrideToolchain rustWithTools;
9-
src = craneLib.cleanCargoSource (craneLib.path ./.);
10-
commonArgs = {
11-
inherit src;
12-
strictDeps = true;
13-
};
14-
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
4+
rustProject = { crateName, localDeps, dataDeps }:
5+
let
6+
rustWithTools = pkgs.rust-bin.stable.latest.default.override {
7+
extensions = [ "rustfmt" "rust-analyzer" "clippy" ];
8+
};
9+
craneLib = inputs.crane.lib.${system}.overrideToolchain rustWithTools;
1510

16-
in
17-
{
18-
devShells."dev-${crateName}-rust" = craneLib.devShell {
19-
checks = self'.checks;
20-
};
11+
buildEnv = pkgs.stdenv.mkDerivation {
12+
src = ./.;
13+
name = "lbf-rust-workspace";
14+
unpackPhase = builtins.concatStringsSep "\n"
15+
([
16+
"mkdir -p $out"
17+
"cp -r $src $out/${crateName}"
18+
]
19+
++ (map ({ name, path }: "cp -r ${path} $out/${name}") localDeps)
20+
++ (map ({ name, path }: "cp -r ${path} $out/${name}") dataDeps)
21+
);
22+
};
23+
commonArgs = {
24+
src = buildEnv;
25+
pname = crateName;
26+
strictDeps = true;
27+
cargoLock = ./Cargo.lock;
28+
cargoToml = ./Cargo.toml;
29+
postUnpack = ''
30+
cd $sourceRoot/${crateName}
31+
sourceRoot="."
32+
'';
33+
};
34+
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
35+
36+
in
37+
{
38+
devShells."dev-${crateName}-rust" = craneLib.devShell {
39+
checks = self'.checks;
40+
};
2141

22-
packages."${crateName}-rust" = craneLib.buildPackage (commonArgs // {
23-
inherit cargoArtifacts;
24-
doTest = false;
25-
});
42+
packages."${crateName}-rust" = craneLib.buildPackage commonArgs // {
43+
inherit cargoArtifacts;
44+
doCheck = false;
45+
};
2646

27-
checks."${crateName}-rust-test" = craneLib.cargoNextest (commonArgs // {
28-
inherit cargoArtifacts;
29-
});
47+
checks."${crateName}-rust-test" = craneLib.cargoNextest (commonArgs // {
48+
inherit cargoArtifacts;
49+
});
3050

31-
checks."${crateName}-rust-clippy" = craneLib.cargoClippy (commonArgs // {
32-
inherit cargoArtifacts;
33-
});
51+
checks."${crateName}-rust-clippy" = craneLib.cargoClippy (commonArgs // {
52+
inherit cargoArtifacts;
53+
});
54+
};
55+
in
56+
rustProject {
57+
crateName = "lbr-prelude-derive";
58+
localDeps = [
59+
{
60+
name = "lbr-prelude";
61+
path = ../lbr-prelude;
62+
}
63+
];
64+
dataDeps = [ ];
3465
};
3566

3667
}

runtimes/rust/lbr-prelude/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ proptest = "1.3.1"
1212
serde = "1.0.188"
1313
serde_json = { version = "1.0.107", features = ["arbitrary_precision"] }
1414
thiserror = "1.0.49"
15-
lbr-prelude-derive = { path = "../lbr-prelude-derive", optional = true }
15+
lbr-prelude-derive = { version = "0.1.0", path = "../lbr-prelude-derive", optional = true }
1616

1717
[features]
1818
default = ["derive"]

runtimes/rust/lbr-prelude/build.nix

Lines changed: 57 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,67 @@
11
{ inputs, ... }: {
22
perSystem = { self', pkgs, system, ... }:
33
let
4-
crateName = "lbr-prelude";
5-
rustWithTools = pkgs.rust-bin.stable.latest.default.override {
6-
extensions = [ "rustfmt" "rust-analyzer" "clippy" ];
7-
};
8-
craneLib = inputs.crane.lib.${system}.overrideToolchain rustWithTools;
9-
src = craneLib.cleanCargoSource (craneLib.path ./.);
10-
commonArgs = {
11-
inherit src;
12-
strictDeps = true;
13-
};
14-
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
4+
rustProject = { crateName, localDeps, dataDeps }:
5+
let
6+
rustWithTools = pkgs.rust-bin.stable.latest.default.override {
7+
extensions = [ "rustfmt" "rust-analyzer" "clippy" ];
8+
};
9+
craneLib = inputs.crane.lib.${system}.overrideToolchain rustWithTools;
1510

16-
in
17-
{
18-
devShells."dev-${crateName}-rust" = craneLib.devShell {
19-
checks = self'.checks;
20-
};
11+
buildEnv = pkgs.stdenv.mkDerivation {
12+
src = ./.;
13+
name = "lbf-rust-workspace";
14+
unpackPhase = builtins.concatStringsSep "\n"
15+
([
16+
"mkdir -p $out"
17+
"cp -r $src $out/${crateName}"
18+
]
19+
++ (map ({ name, path }: "cp -r ${path} $out/${name}") localDeps)
20+
++ (map ({ name, path }: "cp -r ${path} $out/${name}") dataDeps)
21+
);
22+
};
23+
commonArgs = {
24+
src = buildEnv;
25+
pname = crateName;
26+
strictDeps = true;
27+
cargoLock = ./Cargo.lock;
28+
cargoToml = ./Cargo.toml;
29+
postUnpack = ''
30+
cd $sourceRoot/${crateName}
31+
sourceRoot="."
32+
'';
33+
};
34+
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
35+
36+
in
37+
{
38+
devShells."dev-${crateName}-rust" = craneLib.devShell {
39+
checks = self'.checks;
40+
};
2141

22-
packages."${crateName}-rust" = craneLib.buildPackage (commonArgs // {
23-
inherit cargoArtifacts;
24-
doTest = false;
25-
});
42+
packages."${crateName}-rust" = craneLib.buildPackage commonArgs // {
43+
inherit cargoArtifacts;
44+
doCheck = false;
45+
};
2646

27-
checks."${crateName}-rust-test" = craneLib.cargoNextest (commonArgs // {
28-
inherit cargoArtifacts;
29-
});
47+
checks."${crateName}-rust-test" = craneLib.cargoNextest (commonArgs // {
48+
inherit cargoArtifacts;
49+
});
3050

31-
checks."${crateName}-rust-clippy" = craneLib.cargoClippy (commonArgs // {
32-
inherit cargoArtifacts;
33-
});
51+
checks."${crateName}-rust-clippy" = craneLib.cargoClippy (commonArgs // {
52+
inherit cargoArtifacts;
53+
});
54+
};
55+
in
56+
rustProject {
57+
crateName = "lbr-prelude";
58+
localDeps = [
59+
{
60+
name = "lbr-prelude-derive";
61+
path = ../lbr-prelude-derive;
62+
}
63+
];
64+
dataDeps = [ ];
3465
};
3566

3667
}

0 commit comments

Comments
 (0)