dockerTools: Always cross compile for another arch in the cross example

The example fails to build on aarch64, so lets cross build for gnu64.
This commit is contained in:
adisbladis 2020-11-20 11:57:56 +01:00
parent 31c3d39866
commit b7b22c5814
No known key found for this signature in database
GPG key ID: 110BFAD44C6249B7
2 changed files with 10 additions and 5 deletions

View file

@ -237,14 +237,14 @@ import ./make-test-python.nix ({ pkgs, ... }: {
with subtest("Ensure cross compiled image can be loaded and has correct arch."):
docker.succeed(
"docker load --input='${pkgs.dockerTools.examples.cross-aarch64}'",
"docker load --input='${pkgs.dockerTools.examples.cross}'",
)
assert (
docker.succeed(
"docker inspect ${pkgs.dockerTools.examples.cross-aarch64.imageName} "
"docker inspect ${pkgs.dockerTools.examples.cross.imageName} "
+ "| ${pkgs.jq}/bin/jq -r .[].Architecture"
).strip()
== "arm64v8"
== "${if pkgs.system == "aarch64-linux" then "amd64" else "arm64v8"}"
)
'';
})

View file

@ -408,10 +408,15 @@ rec {
};
# basic example, with cross compilation
cross-aarch64 = pkgsCross.aarch64-multiplatform.dockerTools.buildImage {
cross = let
# Cross compile for x86_64 if on aarch64
crossPkgs =
if pkgs.system == "aarch64-linux" then pkgsCross.gnu64
else pkgsCross.aarch64-multiplatform;
in crossPkgs.dockerTools.buildImage {
name = "hello-cross";
tag = "latest";
contents = pkgsCross.aarch64-multiplatform.hello;
contents = crossPkgs.hello;
};
}