From 49efa52c0c345efbdc4798582f8b6da14187a4f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Rod=C3=A1k?= Date: Fri, 14 Feb 2025 10:52:10 +0100 Subject: [PATCH] Set empty TARGETVARIANT and BUILDVARIANT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Docker does not set these values for ARM64. This fixes the TestConformance/multistage-builtin-args and TestConformance/builtins tests on ARM64. Signed-off-by: Jan Rodák --- imagebuildah/build.go | 12 ++++++++---- tests/bud.bats | 12 ++++++++---- tests/conformance/conformance_test.go | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/imagebuildah/build.go b/imagebuildah/build.go index 607a99db9a..0bdcbbea67 100644 --- a/imagebuildah/build.go +++ b/imagebuildah/build.go @@ -427,12 +427,9 @@ func buildDockerfilesOnce(ctx context.Context, store storage.Store, logger *logr // fill them in using values for the default platform defaultPlatform := platforms.DefaultSpec() builtinArgDefaults["TARGETOS"] = defaultPlatform.OS - builtinArgDefaults["TARGETVARIANT"] = defaultPlatform.Variant + builtinArgDefaults["TARGETVARIANT"] = "" builtinArgDefaults["TARGETARCH"] = defaultPlatform.Architecture builtinArgDefaults["TARGETPLATFORM"] = defaultPlatform.OS + "/" + defaultPlatform.Architecture - if defaultPlatform.Variant != "" { - builtinArgDefaults["TARGETPLATFORM"] += "/" + defaultPlatform.Variant - } } delete(options.Args, "TARGETPLATFORM") @@ -453,6 +450,13 @@ func buildDockerfilesOnce(ctx context.Context, store storage.Store, logger *logr for k, v := range builtinArgDefaults { b.BuiltinArgDefaults[k] = v } + + buildVariant := b.BuiltinArgDefaults["BUILDVARIANT"] + buildPlatform := b.BuiltinArgDefaults["BUILDPLATFORM"] + cleanedBuildPlatform, _ := strings.CutSuffix(buildPlatform, "/"+buildVariant) + b.BuiltinArgDefaults["BUILDPLATFORM"] = cleanedBuildPlatform + b.BuiltinArgDefaults["BUILDVARIANT"] = "" + defaultContainerConfig, err := config.Default() if err != nil { return "", nil, fmt.Errorf("failed to get container config: %w", err) diff --git a/tests/bud.bats b/tests/bud.bats index 10e4f8113d..a22a969816 100644 --- a/tests/bud.bats +++ b/tests/bud.bats @@ -290,7 +290,8 @@ _EOF "With explicit --platform, buildah should warn about pulling difference in platform" assert "$output" =~ "TARGETOS=linux" " --platform TARGETOS set correctly" assert "$output" =~ "TARGETARCH=amd64" " --platform TARGETARCH set correctly" - assert "$output" =~ "TARGETVARIANT=" " --platform TARGETVARIANT set correctly" + # By default, BUILDVARIANT/TARGETVARIANT should be empty. + assert "$output" =~ "TARGETVARIANT=\s" " --platform TARGETVARIANT set correctly" assert "$output" =~ "TARGETPLATFORM=linux/amd64/v2" " --platform TARGETPLATFORM set correctly" # Likewise with individual args @@ -300,7 +301,8 @@ _EOF "With explicit --variant, buildah should warn about pulling difference in platform" assert "$output" =~ "TARGETOS=linux" "--os --arch --variant TARGETOS set correctly" assert "$output" =~ "TARGETARCH=amd64" "--os --arch --variant TARGETARCH set correctly" - assert "$output" =~ "TARGETVARIANT=" "--os --arch --variant TARGETVARIANT set correctly" + # By default, BUILDVARIANT/TARGETVARIANT should be empty. + assert "$output" =~ "TARGETVARIANT=\s" "--os --arch --variant TARGETVARIANT set correctly" assert "$output" =~ "TARGETPLATFORM=linux/amd64" "--os --arch --variant TARGETPLATFORM set correctly" run_buildah build $WITH_POLICY_JSON --os linux -t source -f $containerfile @@ -308,7 +310,8 @@ _EOF "With explicit --os (but no arch/variant), buildah should not warn about TARGETOS" assert "$output" =~ "TARGETOS=linux" "--os TARGETOS set correctly" assert "$output" =~ "TARGETARCH=${ARCH}" "--os TARGETARCH set correctly" - assert "$output" =~ "TARGETVARIANT=" "--os TARGETVARIANT set correctly" + # By default, BUILDVARIANT/TARGETVARIANT should be empty. + assert "$output" =~ "TARGETVARIANT=\s" "--os TARGETVARIANT set correctly" assert "$output" =~ "TARGETPLATFORM=linux/${ARCH}" "--os TARGETPLATFORM set correctly" run_buildah build $WITH_POLICY_JSON --arch amd64 -t source -f $containerfile @@ -316,7 +319,8 @@ _EOF "With explicit --os (but no arch/variant), buildah should not warn about TARGETOS" assert "$output" =~ "TARGETOS=linux" "--arch TARGETOS set correctly" assert "$output" =~ "TARGETARCH=amd64" "--arch TARGETARCH set correctly" - assert "$output" =~ "TARGETVARIANT=" "--arch TARGETVARIANT set correctly" + # By default, BUILDVARIANT/TARGETVARIANT should be empty. + assert "$output" =~ "TARGETVARIANT=\s" "--arch TARGETVARIANT set correctly" assert "$output" =~ "TARGETPLATFORM=linux/amd64" "--arch TARGETPLATFORM set correctly" for option in "--arch=arm64" "--os=windows" "--variant=v2"; do diff --git a/tests/conformance/conformance_test.go b/tests/conformance/conformance_test.go index 0e6e3129bc..e1136ad88c 100644 --- a/tests/conformance/conformance_test.go +++ b/tests/conformance/conformance_test.go @@ -3321,7 +3321,7 @@ var internalTestCases = []testCase{ }, { - name: "multistage-builtin-args", + name: "multistage-builtin-args", // By default, BUILDVARIANT/TARGETVARIANT should be empty. dockerfile: "Dockerfile.margs", dockerUseBuildKit: true, },