Compare commits
No commits in common. "8061bf5e1c250ff9234894f7a63910fedef1357b" and "304a89c57b1e951481cd0bf2e56582b41b6d73e4" have entirely different histories.
8061bf5e1c
...
304a89c57b
2 changed files with 43 additions and 2 deletions
|
@ -19,9 +19,30 @@ let
|
||||||
overlays = [ cargo2nixOverlay ];
|
overlays = [ cargo2nixOverlay ];
|
||||||
};
|
};
|
||||||
|
|
||||||
toolchainOptions = {
|
/* Cargo2nix is built for rustOverlay which installs Rust from Mozilla releases.
|
||||||
|
This is fine for 64-bit platforms, but for 32-bit platforms, we need our own Rust
|
||||||
|
to avoid incompatibilities with time_t between different versions of musl
|
||||||
|
(>= 1.2.0 shipped by NixOS, < 1.2.0 with which rustc was built), which lead to compilation breakage.
|
||||||
|
So we want a Rust release that is bound to our Nix repository to avoid these problems.
|
||||||
|
See here for more info: https://musl.libc.org/time64.html
|
||||||
|
Because Cargo2nix does not support the Rust environment shipped by NixOS,
|
||||||
|
we emulate the structure of the Rust object created by rustOverlay.
|
||||||
|
In practise, rustOverlay ships rustc+cargo in a single derivation while
|
||||||
|
NixOS ships them in separate ones. We reunite them with symlinkJoin.
|
||||||
|
*/
|
||||||
|
toolchainOptions = if target == null || target == "x86_64-unknown-linux-musl"
|
||||||
|
|| target == "aarch64-unknown-linux-musl" then {
|
||||||
rustVersion = "1.73.0";
|
rustVersion = "1.73.0";
|
||||||
extraRustComponents = [ "clippy" ];
|
extraRustComponents = [ "clippy" ];
|
||||||
|
} else {
|
||||||
|
rustToolchain = pkgs.symlinkJoin {
|
||||||
|
name = "rust-static-toolchain-${target}";
|
||||||
|
paths = [
|
||||||
|
pkgs.rustPlatform.rust.cargo
|
||||||
|
pkgs.rustPlatform.rust.rustc
|
||||||
|
# clippy not needed, it only runs on amd64
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
buildEnv = (drv:
|
buildEnv = (drv:
|
||||||
|
|
|
@ -3,9 +3,29 @@
|
||||||
with import ./common.nix;
|
with import ./common.nix;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
platforms = [
|
||||||
|
#"x86_64-unknown-linux-musl"
|
||||||
|
"i686-unknown-linux-musl"
|
||||||
|
#"aarch64-unknown-linux-musl"
|
||||||
|
"armv6l-unknown-linux-musleabihf"
|
||||||
|
];
|
||||||
|
pkgsList = builtins.map (target:
|
||||||
|
import pkgsSrc {
|
||||||
|
inherit system;
|
||||||
|
crossSystem = {
|
||||||
|
config = target;
|
||||||
|
isStatic = true;
|
||||||
|
};
|
||||||
|
overlays = [ cargo2nixOverlay ];
|
||||||
|
}) platforms;
|
||||||
pkgsHost = import pkgsSrc { };
|
pkgsHost = import pkgsSrc { };
|
||||||
|
lib = pkgsHost.lib;
|
||||||
kaniko = (import ./kaniko.nix) pkgsHost;
|
kaniko = (import ./kaniko.nix) pkgsHost;
|
||||||
winscp = (import ./winscp.nix) pkgsHost;
|
winscp = (import ./winscp.nix) pkgsHost;
|
||||||
manifestTool = (import ./manifest-tool.nix) pkgsHost;
|
manifestTool = (import ./manifest-tool.nix) pkgsHost;
|
||||||
in [ kaniko winscp manifestTool ]
|
in lib.flatten (builtins.map (pkgs: [
|
||||||
|
pkgs.rustPlatform.rust.rustc
|
||||||
|
pkgs.rustPlatform.rust.cargo
|
||||||
|
pkgs.buildPackages.stdenv.cc
|
||||||
|
]) pkgsList) ++ [ kaniko winscp manifestTool ]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue