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

The example fails to build on aarch64, so lets cross build for gnu64.

(cherry picked from commit b7b22c5814)
This commit is contained in:
adisbladis
2020-11-20 11:57:56 +01:00
parent 6fb5786fb3
commit 263a69648d
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;
};
}