dockerTools: Set correct architecture when cross compiling

This commit is contained in:
adisbladis 2020-11-19 15:03:44 +01:00
parent 4313ac6b29
commit 8a3b33baed
No known key found for this signature in database
GPG Key ID: 110BFAD44C6249B7
1 changed files with 14 additions and 3 deletions

View File

@ -31,6 +31,7 @@
writeScript,
writeText,
writePython3,
system, # Note: This is the cross system we're compiling for
}:
# WARNING: this API is unstable and may be subject to backwards-incompatible changes in the future.
@ -56,6 +57,16 @@ let
done;
'';
# Map nixpkgs architecture to Docker notation
# Reference: https://github.com/docker-library/official-images#architectures-other-than-amd64
getArch = nixSystem: {
aarch64-linux = "arm64v8";
armv7l-linux = "arm32v7";
x86_64-linux = "amd64";
powerpc64le-linux = "ppc64le";
i686-linux = "i386";
}.${nixSystem} or "Can't map Nix system ${nixSystem} to Docker architecture notation. Please check that your input and your requested build are correct or update the mapping in Nixpkgs.";
in
rec {
@ -72,7 +83,7 @@ rec {
, imageDigest
, sha256
, os ? "linux"
, arch ? buildPackages.go.GOARCH
, arch ? getArch system
# This is used to set name to the pulled image
, finalImageName ? imageName
@ -488,7 +499,7 @@ rec {
baseJson = let
pure = writeText "${baseName}-config.json" (builtins.toJSON {
inherit created config;
architecture = buildPackages.go.GOARCH;
architecture = getArch system;
os = "linux";
});
impure = runCommand "${baseName}-config.json"
@ -715,7 +726,7 @@ rec {
streamScript = writePython3 "stream" {} ./stream_layered_image.py;
baseJson = writeText "${name}-base.json" (builtins.toJSON {
inherit config;
architecture = buildPackages.go.GOARCH;
architecture = getArch system;
os = "linux";
});