forked from Deuxfleurs/garage
Merge pull request 'Use only oxalica/rust-overlay toolchain and not nixpkgs' (#710) from oxalica-toolchain-only into main
Reviewed-on: Deuxfleurs/garage#710
This commit is contained in:
commit
8061bf5e1c
2 changed files with 2 additions and 43 deletions
|
@ -19,30 +19,9 @@ let
|
||||||
overlays = [ cargo2nixOverlay ];
|
overlays = [ cargo2nixOverlay ];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Cargo2nix is built for rustOverlay which installs Rust from Mozilla releases.
|
toolchainOptions = {
|
||||||
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,29 +3,9 @@
|
||||||
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 lib.flatten (builtins.map (pkgs: [
|
in [ kaniko winscp manifestTool ]
|
||||||
pkgs.rustPlatform.rust.rustc
|
|
||||||
pkgs.rustPlatform.rust.cargo
|
|
||||||
pkgs.buildPackages.stdenv.cc
|
|
||||||
]) pkgsList) ++ [ kaniko winscp manifestTool ]
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue