diff --git a/cmd/buildah/bud.go b/cmd/buildah/bud.go index 4cb2a150105..5db109b2860 100644 --- a/cmd/buildah/bud.go +++ b/cmd/buildah/bud.go @@ -14,6 +14,8 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/spf13/cobra" + "github.com/containerd/containerd/platforms" + specs "github.com/opencontainers/image-spec/specs-go/v1" ) type budResults struct { @@ -90,6 +92,18 @@ func getDockerfiles(files []string) []string { return dockerfiles } +type argArray map[string]string + +func (args argArray) setArch(p specs.Platform) { + args["TARGETPLATFORM"] = p.OS + "/" + p.Architecture + args["TARGETOS"] = p.OS + args["TARGETARCH"] = p.Architecture + args["TARGETVARIANT"] = p.Variant + if p.Variant != "" { + args["TARGETPLATFORM"] = args["TARGETPLATFORM"] + "/" + p.Variant + } +} + func budCmd(c *cobra.Command, inputArgs []string, iopts budResults) error { output := "" tags := []string{} @@ -116,12 +130,36 @@ func budCmd(c *cobra.Command, inputArgs []string, iopts budResults) error { } logrus.Debugf("Pull Policy for pull [%v]", pullPolicy) - args := make(map[string]string) + args := make(argArray) + + p := platforms.DefaultSpec() + if c.Flag("platform").Changed { + var err error + p, err = platforms.Parse(iopts.Platform) + if err != nil { + return errors.Wrapf(err, "error parsing --platform argument") + } + } + args.setArch(p) + if c.Flag("build-arg").Changed { for _, arg := range iopts.BuildArg { av := strings.SplitN(arg, "=", 2) if len(av) > 1 { args[av[0]] = av[1] + if av[0] == "TARGETPLATFORM" { + var err error + var p specs.Platform + if av[1] != "" { + p, err = platforms.Parse(av[1]) + } else { + p, err = platforms.Parse(iopts.Platform) + } + if err != nil { + return errors.Wrapf(err, "error parsing --platform argument") + } + args.setArch(p) + } } else { delete(args, av[0]) } diff --git a/commit.go b/commit.go index 24642f4dc5d..b1bb373a327 100644 --- a/commit.go +++ b/commit.go @@ -202,6 +202,9 @@ func (b *Builder) Commit(ctx context.Context, dest types.ImageReference, options } systemContext := getSystemContext(b.store, options.SystemContext, options.SignaturePolicyPath) + systemContext.ArchitectureChoice = b.Architecture() + systemContext.OSChoice = b.OS() + systemContext.VariantChoice = b.Variant() blocked, err := isReferenceBlocked(dest, systemContext) if err != nil { diff --git a/config.go b/config.go index 32f2171eb03..2b1b34ffb90 100644 --- a/config.go +++ b/config.go @@ -83,6 +83,20 @@ func (b *Builder) initConfig(ctx context.Context, img types.Image) error { b.ImageAnnotations = v1Manifest.Annotations } } + if b.Args["TARGETOS"] != "" { + b.SetOS(b.Args["TARGETOS"]) + } else if b.OS() == "" { + b.SetOS(runtime.GOOS) + } + if b.Args["TARGETARCH"] != "" { + b.SetArchitecture(b.Args["TARGETARCH"]) + } else if b.Architecture() == "" { + b.SetArchitecture(runtime.GOARCH) + } + if b.Args["TARGETVARIANT"] != "" { + b.SetVariant(b.Args["TARGETVARIANT"]) + // TODO else set based on detection + } b.fixupConfig() return nil @@ -102,12 +116,6 @@ func (b *Builder) fixupConfig() { if b.OCIv1.Created == nil || b.OCIv1.Created.IsZero() { b.OCIv1.Created = &now } - if b.OS() == "" { - b.SetOS(runtime.GOOS) - } - if b.Architecture() == "" { - b.SetArchitecture(runtime.GOARCH) - } if b.Format == Dockerv2ImageManifest && b.Hostname() == "" { b.SetHostname(stringid.TruncateID(stringid.GenerateRandomID())) } @@ -178,6 +186,20 @@ func (b *Builder) SetArchitecture(arch string) { b.Docker.Architecture = arch } +// Variant returns the variant of the architecture on which the container, or +// a container build using an image build from this container, is intended to +// be run. +func (b *Builder) Variant() string { + return b.Docker.Variant +} + +// SetVariant sets the variant of the architecture on which the container, or +// a container built using an image built from this container, is intended to +// be run. +func (b *Builder) SetVariant(variant string) { + b.Docker.Variant = variant +} + // Maintainer returns contact information for the person who built the image. func (b *Builder) Maintainer() string { return b.OCIv1.Author diff --git a/docker/types.go b/docker/types.go index 561287ac276..0b96ba8c5b5 100644 --- a/docker/types.go +++ b/docker/types.go @@ -151,6 +151,8 @@ type V1Image struct { Config *Config `json:"config,omitempty"` // Architecture is the hardware that the image is build and runs on Architecture string `json:"architecture,omitempty"` + // Variant is the architecture variant + Variant string `json:"variant,omitempty"` // OS is the operating system used to build and run the image OS string `json:"os,omitempty"` // Size is the total size of the image including all layers it is composed of diff --git a/docs/buildah-bud.md b/docs/buildah-bud.md index d6715f17ce5..dabd5328192 100644 --- a/docs/buildah-bud.md +++ b/docs/buildah-bud.md @@ -336,11 +336,10 @@ that the PID namespace in which `buildah` itself is being run should be reused, or it can be the path to a PID namespace which is already in use by another process. -**--platform**="Linux" +**--platform**="OS[/arch[/variant]]" -This option has no effect on the build. Other container engines use this option -to control the execution platform for the build (e.g., Windows, Linux) which is -not required for Buildah as it supports only Linux. +Defines the platform for the destination, OS (e.g., Windows, Linux), arch (e.g. +x86_64, ppc64le, arm64), and variant (e.g. v7, for arm64). **--pull** diff --git a/go.mod b/go.mod index 74944c02bb9..7da15732db0 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.12 require ( github.com/blang/semver v3.5.0+incompatible // indirect + github.com/containerd/containerd v1.3.0 github.com/containernetworking/cni v0.7.1 github.com/containers/image/v5 v5.0.0 github.com/containers/storage v1.13.5 @@ -30,7 +31,7 @@ require ( github.com/opencontainers/runtime-tools v0.9.0 github.com/opencontainers/selinux v1.3.0 github.com/openshift/api v3.9.1-0.20190810003144-27fb16909b15+incompatible - github.com/openshift/imagebuilder v1.1.1 + github.com/openshift/imagebuilder v1.1.1-0.20191118051649-22563141c8d6 github.com/pkg/errors v0.8.1 github.com/seccomp/containers-golang v0.0.0-20180629143253-cdfdaa7543f4 github.com/seccomp/libseccomp-golang v0.9.1 diff --git a/go.sum b/go.sum index 8f13eac46bd..2abe0e975d6 100644 --- a/go.sum +++ b/go.sum @@ -273,6 +273,8 @@ github.com/openshift/api v3.9.1-0.20190810003144-27fb16909b15+incompatible h1:s5 github.com/openshift/api v3.9.1-0.20190810003144-27fb16909b15+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= github.com/openshift/imagebuilder v1.1.0 h1:oT704SkwMEzmIMU/+Uv1Wmvt+p10q3v2WuYMeFI18c4= github.com/openshift/imagebuilder v1.1.0/go.mod h1:9aJRczxCH0mvT6XQ+5STAQaPWz7OsWcU5/mRkt8IWeo= +github.com/openshift/imagebuilder v1.1.1-0.20191118051649-22563141c8d6 h1:+hNDmNoPVtdnhHZDNjCA1hCGGrdvZ0ijMsN9zdIQ0QM= +github.com/openshift/imagebuilder v1.1.1-0.20191118051649-22563141c8d6/go.mod h1:9aJRczxCH0mvT6XQ+5STAQaPWz7OsWcU5/mRkt8IWeo= github.com/openshift/imagebuilder v1.1.1 h1:KAUR31p8UBJdfVO42azWgb+LeMAed2zaKQ19e0C0X2I= github.com/openshift/imagebuilder v1.1.1/go.mod h1:9aJRczxCH0mvT6XQ+5STAQaPWz7OsWcU5/mRkt8IWeo= github.com/ostreedev/ostree-go v0.0.0-20190702140239-759a8c1ac913 h1:TnbXhKzrTOyuvWrjI8W6pcoI9XPbLHFXCdN2dtUw7Rw= diff --git a/imagebuildah/executor.go b/imagebuildah/executor.go index 35fc3d63d4f..2ef96404e11 100644 --- a/imagebuildah/executor.go +++ b/imagebuildah/executor.go @@ -32,14 +32,22 @@ import ( // instruction in the Dockerfile, since that's usually an indication of a user // error, but for these values we make exceptions and ignore them. var builtinAllowedBuildArgs = map[string]bool{ - "HTTP_PROXY": true, - "http_proxy": true, - "HTTPS_PROXY": true, - "https_proxy": true, - "FTP_PROXY": true, - "ftp_proxy": true, - "NO_PROXY": true, - "no_proxy": true, + "HTTP_PROXY": true, + "http_proxy": true, + "HTTPS_PROXY": true, + "https_proxy": true, + "FTP_PROXY": true, + "ftp_proxy": true, + "NO_PROXY": true, + "no_proxy": true, + "TARGETPLATFORM": true, + "TARGETOS": true, + "TARGETARCH": true, + "TARGETVARIANT": true, + "BUILDPLATFORM": true, + "BUILDOS": true, + "BUILDARCH": true, + "BUILDVARIANT": true, } // Executor is a buildah-based implementation of the imagebuilder.Executor @@ -401,6 +409,7 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image } }() + var lastFromStage imagebuilder.Stage // Build maps of every named base image and every referenced stage root // filesystem. Individual stages can use them to determine whether or // not they can skip certain steps near the end of their stages. @@ -418,6 +427,7 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image // FROM instruction uses argument values, // we might not record the right value here. b.baseMap[base] = true + lastFromStage = stage logrus.Debugf("base: %q", base) } } @@ -439,6 +449,16 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image } } + // TODO: crude - needs derive from image received(?) + // we're assuming subsequent stages on a multistage image is the target stage. + // Ideally a user should be explicit like FROM --platform =$TARGETPLATFORM + // and we should handle this. + if lastFromStage.Builder != nil { + b.systemContext.ArchitectureChoice = lastFromStage.Builder.Args["TARGETARCH"] + b.systemContext.OSChoice = lastFromStage.Builder.Args["TARGETOS"] + b.systemContext.VariantChoice = lastFromStage.Builder.Args["TARGETVARIANT"] + } + // Run through the build stages, one at a time. for stageIndex, stage := range stages { var lastErr error diff --git a/imagebuildah/stage_executor.go b/imagebuildah/stage_executor.go index 67c0a0eb945..dcae8a730c3 100644 --- a/imagebuildah/stage_executor.go +++ b/imagebuildah/stage_executor.go @@ -655,6 +655,7 @@ func (s *StageExecutor) prepare(ctx context.Context, stage imagebuilder.Stage, f Container: builder.Container, Author: builder.Maintainer(), Architecture: builder.Architecture(), + OS: builder.OS(), RootFS: rootfs, } dImage.Config = &dImage.ContainerConfig diff --git a/pkg/cli/common.go b/pkg/cli/common.go index 6f49cc2406a..b6eb3b4d8f3 100644 --- a/pkg/cli/common.go +++ b/pkg/cli/common.go @@ -159,7 +159,7 @@ func GetBudFlags(flags *BudResults) pflag.FlagSet { fs.BoolVar(&flags.NoCache, "no-cache", false, "Do not use existing cached images for the container build. Build from the start with a new set of cached layers.") fs.StringVar(&flags.Logfile, "logfile", "", "log to `file` instead of stdout/stderr") fs.IntVar(&flags.Loglevel, "loglevel", 0, "adjust logging level (range from -2 to 3)") - fs.StringVar(&flags.Platform, "platform", "", "CLI compatibility: no action or effect") + fs.StringVar(&flags.Platform, "platform", "", "Sets target platform and TARGET{PLATFORM,OS,ARCH,VARIANT} build args for cross builds") fs.BoolVar(&flags.Pull, "pull", true, "pull the image from the registry if newer or not present in store, if false, only pull the image if not present") fs.BoolVar(&flags.PullAlways, "pull-always", false, "pull the image even if the named image is present in store") fs.BoolVar(&flags.PullNever, "pull-never", false, "do not pull the image, use the image present in store if available") diff --git a/tests/bud.bats b/tests/bud.bats old mode 100644 new mode 100755 index e0e797f9377..24550ad3769 --- a/tests/bud.bats +++ b/tests/bud.bats @@ -1850,3 +1850,117 @@ load helpers target=alpine-image run_buildah 1 bud --authfile /tmp/nonexist --signature-policy ${TESTSDIR}/policy.json -t ${target} ${TESTSDIR}/bud/containerfile } + +@test "bud with --platform" { + target=test_platform + # --platform args are parsed through to TARGET{PLATFORM|OS|ARCH} + buildah --log-level=error bud --platform linux/ppc64le/fakevariant -t "${target}" --layers -f Dockerfile.platformargs ${TESTSDIR}/bud/build-arg + + # metadata + run_buildah --log-level=error inspect --format "{{ .Docker.Architecture }}" "${target}" + expect_output "ppc64le" + run_buildah --log-level=error inspect --format "{{ .OCIv1.Architecture }}" "${target}" + expect_output "ppc64le" + run_buildah --log-level=error inspect --format "{{ .Docker.OS }}" "${target}" + expect_output "linux" + run_buildah --log-level=error inspect --format "{{ .OCIv1.OS }}" "${target}" + expect_output "linux" + + # environment + # build platform takes default values from native platform + native_os=$(OS=$(uname -o); case $OS in GNU/Linux) echo linux ;; *) echo $OS ;; esac) + native_arch=$(ARCH=$(uname -m); case $ARCH in x86_64) echo amd64 ;; i?86) echo 386 ;; armv?l) echo arm ;; *) echo $ARCH ;; esac) + native_variant=$(ARCH=$(uname -m); case $ARCH in armv?l) echo /v${ARCH//[^0-9]/} ;; arm64) echo /v8 ;; esac) + + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 1 }}" "${target}" + expect_output "BUILDPLATFORM=${native_os}/${native_arch}${native_variant}" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 1 }}" "${target}" + expect_output "BUILDPLATFORM=${native_os}/${native_arch}${native_variant}" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 2 }}" "${target}" + expect_output "BUILDOS=${native_os}" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 2 }}" "${target}" + expect_output "BUILDOS=${native_os}" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 3 }}" "${target}" + expect_output "BUILDARCH=${native_arch}" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 3 }}" "${target}" + expect_output "BUILDARCH=${native_arch}" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 4 }}" "${target}" + expect_output "BUILDVARIANT=${native_variant:1}" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 4 }}" "${target}" + expect_output "BUILDVARIANT=${native_variant:1}" + + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 5 }}" "${target}" + expect_output "TARGETPLATFORM=linux/ppc64le/fakevariant" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 5 }}" "${target}" + expect_output "TARGETPLATFORM=linux/ppc64le/fakevariant" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 6 }}" "${target}" + expect_output "TARGETOS=linux" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 6 }}" "${target}" + expect_output "TARGETOS=linux" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 7 }}" "${target}" + expect_output "TARGETARCH=ppc64le" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 7 }}" "${target}" + expect_output "TARGETARCH=ppc64le" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 8 }}" "${target}" + expect_output "TARGETVARIANT=fakevariant" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 8 }}" "${target}" + expect_output "TARGETVARIANT=fakevariant" + + buildah rmi "${target}" +} + +@test "bud with --build-arg TARGETPLATFORM=..." { + target=test_platform_buildarg + buildah --log-level=error bud --build-arg TARGETPLATFORM=linux/arm64/v7 --layers -t "${target}" -f Dockerfile.platformargs ${TESTSDIR}/bud/build-arg + # currently doesn't expand BUILDPLATFORM -> BUILDOS .... + # if so we want to we'd change vendor/github.com/openshift/imagebuilder/dispatchers.go + + run_buildah --log-level=error inspect --format "{{ .Docker.Architecture }}" "${target}" + expect_output "arm64" + run_buildah --log-level=error inspect --format "{{ .OCIv1.Architecture }}" "${target}" + expect_output "arm64" + run_buildah --log-level=error inspect --format "{{ .Docker.OS }}" "${target}" + expect_output "linux" + run_buildah --log-level=error inspect --format "{{ .OCIv1.OS }}" "${target}" + expect_output "linux" + + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 5 }}" "${target}" + expect_output "TARGETPLATFORM=linux/arm64/v7" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 5 }}" "${target}" + expect_output "TARGETPLATFORM=linux/arm64/v7" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 6 }}" "${target}" + expect_output "TARGETOS=linux" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 6 }}" "${target}" + expect_output "TARGETOS=linux" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 7 }}" "${target}" + expect_output "TARGETARCH=arm64" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 7 }}" "${target}" + expect_output "TARGETARCH=arm64" + run_buildah --log-level=error inspect --format "{{ index .Docker.Config.Env 8 }}" "${target}" + expect_output "TARGETVARIANT=v7" + run_buildah --log-level=error inspect --format "{{ index .OCIv1.Config.Env 8 }}" "${target}" + expect_output "TARGETVARIANT=v7" + + buildah rmi "${target}" +} + +@test "bud-multi-stage-platform" { + target=test_multi_stage_platform + buildah --log-level=error bud --platform linux/ppc64le -t "${target}" --layers -f Dockerfile.platform_multistage ${TESTSDIR}/bud/build-arg + # --platform args effects the final image and second stage downloaded (ubuntu) + run_buildah --log-level=error inspect --format "{{ .Docker.Architecture }}" "${target}" + expect_output "ppc64le" + run_buildah --log-level=error inspect --format "{{ .OCIv1.Architecture }}" "${target}" + expect_output "ppc64le" + run_buildah --log-level=error inspect --format "{{ .Docker.Architecture }}" docker.io/library/ubuntu:latest + expect_output "ppc64le" + run_buildah --log-level=error inspect --format "{{ .OCIv1.Architecture }}" docker.io/library/ubuntu:latest + expect_output "ppc64le" + + run_buildah --log-level=error inspect --format "{{ .Docker.OS }}" "${target}" + expect_output "linux" + run_buildah --log-level=error inspect --format "{{ .OCIv1.OS }}" "${target}" + expect_output "linux" + + buildah rmi "${target}" docker.io/library/ubuntu:latest +} diff --git a/tests/bud/build-arg/Dockerfile.platform_multistage b/tests/bud/build-arg/Dockerfile.platform_multistage new file mode 100644 index 00000000000..55598389abf --- /dev/null +++ b/tests/bud/build-arg/Dockerfile.platform_multistage @@ -0,0 +1,11 @@ +FROM scratch +ARG BUILDPLATFORM +ARG BUILDOS +ARG BUILDARCH +ARG BUILDVARIANT +ARG TARGETPLATFORM +ARG TARGETOS +ARG TARGETARCH +ARG TARGETVARIANT + +FROM ubuntu diff --git a/tests/bud/build-arg/Dockerfile.platformargs b/tests/bud/build-arg/Dockerfile.platformargs new file mode 100644 index 00000000000..d0332f93b62 --- /dev/null +++ b/tests/bud/build-arg/Dockerfile.platformargs @@ -0,0 +1,20 @@ +FROM scratch +ARG BUILDPLATFORM +ARG BUILDOS +ARG BUILDARCH +ARG BUILDVARIANT +ARG TARGETPLATFORM +ARG TARGETOS +ARG TARGETARCH +ARG TARGETVARIANT + +ENV BUILDPLATFORM $BUILDPLATFORM +ENV BUILDOS $BUILDOS +ENV BUILDARCH $BUILDARCH +ENV BUILDVARIANT $BUILDVARIANT +ENV TARGETPLATFORM $TARGETPLATFORM +ENV TARGETOS $TARGETOS +ENV TARGETARCH $TARGETARCH +ENV TARGETVARIANT $TARGETVARIANT + +CMD ["echo", "BUILDPLATFORM=$BUILDPLATFORM BUILDOS=$BUILDOS BUILDARCH=$BUILDARCH BUILDVARIANT=$BUILDVARIANT TARGETPLATFORM=$TARGETPLATFORM TARGETOS=$TARGETOS TARGETARCH=$TARGETARCH TARGETVARIANT=$TARGETVARIANT"] diff --git a/vendor/github.com/containers/image/v5/types/types.go b/vendor/github.com/containers/image/v5/types/types.go index 2db8c78273d..5a6b3efa546 100644 --- a/vendor/github.com/containers/image/v5/types/types.go +++ b/vendor/github.com/containers/image/v5/types/types.go @@ -486,6 +486,8 @@ type SystemContext struct { LegacyFormatAuthFilePath string // If not "", overrides the use of platform.GOARCH when choosing an image or verifying architecture match. ArchitectureChoice string + // If not "", overrides the use of Architecture variant when choosing an image or verifying architecture match. + VariantChoice string // If not "", overrides the use of platform.GOOS when choosing an image or verifying OS match. OSChoice string // If not "", overrides the system's default directory containing a blob info cache. diff --git a/vendor/github.com/openshift/imagebuilder/dispatchers.go b/vendor/github.com/openshift/imagebuilder/dispatchers.go index ff365848af5..3d62a388c43 100644 --- a/vendor/github.com/openshift/imagebuilder/dispatchers.go +++ b/vendor/github.com/openshift/imagebuilder/dispatchers.go @@ -21,12 +21,34 @@ import ( "github.com/openshift/imagebuilder/signal" "github.com/openshift/imagebuilder/strslice" + "github.com/containerd/containerd/platforms" ) var ( obRgex = regexp.MustCompile(`(?i)^\s*ONBUILD\s*`) ) +var localspec = platforms.DefaultSpec() + +// https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope +var builtinBuildArgs = map[string]string{ + "TARGETPLATFORM": localspec.OS + "/" + localspec.Architecture, + "TARGETOS": localspec.OS, + "TARGETARCH": localspec.Architecture, + "TARGETVARIANT": localspec.Variant, + "BUILDPLATFORM": localspec.OS + "/" + localspec.Architecture, + "BUILDOS": localspec.OS, + "BUILDARCH": localspec.Architecture, + "BUILDVARIANT": localspec.Variant, +} + +func init() { + if localspec.Variant != "" { + builtinBuildArgs["TARGETPLATFORM"] = builtinBuildArgs["TARGETPLATFORM"] + "/" + localspec.Variant + builtinBuildArgs["BUILDPLATFORM"] = builtinBuildArgs["BUILDPLATFORM"] + "/" + localspec.Variant + } +} + // ENV foo bar // // Sets the environment variable foo to bar, also makes interpolation @@ -516,6 +538,9 @@ func healthcheck(b *Builder, args []string, attributes map[string]bool, flagArgs return nil } + +var targetArgs = []string {"TARGETOS", "TARGETARCH", "TARGETVARIANT"} + // ARG name[=value] // // Adds the variable foo to the trusted list of variables that can be passed @@ -543,6 +568,26 @@ func arg(b *Builder, args []string, attributes map[string]bool, flagArgs []strin name = parts[0] value = parts[1] hasDefault = true + if name == "TARGETPLATFORM" { + p, err := platforms.Parse(value) + if err != nil { + return fmt.Errorf("error parsing TARGETPLATFORM argument") + } + for _, val := range targetArgs { + b.AllowedArgs[val] = true + } + b.Args["TARGETPLATFORM"] = p.OS + "/" + p.Architecture + b.Args["TARGETOS"] = p.OS + b.Args["TARGETARCH"] = p.Architecture + b.Args["TARGETVARIANT"] = p.Variant + if p.Variant != "" { + b.Args["TARGETPLATFORM"] = b.Args["TARGETPLATFORM"] + "/" + p.Variant + } + } + } else if val, ok := builtinBuildArgs[arg]; ok { + name = arg + value = val + hasDefault = true } else { name = arg hasDefault = false diff --git a/vendor/github.com/openshift/imagebuilder/vendor.conf b/vendor/github.com/openshift/imagebuilder/vendor.conf index c3f7d1a6b7a..8074ce80a12 100644 --- a/vendor/github.com/openshift/imagebuilder/vendor.conf +++ b/vendor/github.com/openshift/imagebuilder/vendor.conf @@ -1,4 +1,5 @@ github.com/Azure/go-ansiterm d6e3b3328b783f23731bc4d058875b0371ff8109 +github.com/containerd/containerd v1.3.0 github.com/containers/storage v1.2 github.com/docker/docker b68221c37ee597950364788204546f9c9d0e46a1 github.com/docker/go-connections 97c2040d34dfae1d1b1275fa3a78dbdd2f41cf7e @@ -18,3 +19,7 @@ golang.org/x/crypto ff983b9c42bc9fbf91556e191cc8efb585c16908 golang.org/x/net 45ffb0cd1ba084b73e26dee67e667e1be5acce83 golang.org/x/sys 7fbe1cd0fcc20051e1fcb87fbabec4a1bacaaeba k8s.io/klog 8e90cee79f823779174776412c13478955131846 +google.golang.org/grpc 6eaf6f47437a6b4e2153a190160ef39a92c7eceb # v1.23.0 +github.com/golang/protobuf v1.2.0 +google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944 + diff --git a/vendor/modules.txt b/vendor/modules.txt index 0b71780748a..3155a168b1a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,32 +1,32 @@ # github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 -github.com/Azure/go-ansiterm github.com/Azure/go-ansiterm/winterm +github.com/Azure/go-ansiterm # github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml # github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 github.com/Microsoft/go-winio +github.com/Microsoft/go-winio/pkg/guid github.com/Microsoft/go-winio/archive/tar github.com/Microsoft/go-winio/backuptar -github.com/Microsoft/go-winio/pkg/guid # github.com/Microsoft/hcsshim v0.8.7-0.20191101173118-65519b62243c +github.com/Microsoft/hcsshim/osversion github.com/Microsoft/hcsshim -github.com/Microsoft/hcsshim/internal/cow github.com/Microsoft/hcsshim/internal/hcs github.com/Microsoft/hcsshim/internal/hcserror github.com/Microsoft/hcsshim/internal/hns +github.com/Microsoft/hcsshim/internal/mergemaps +github.com/Microsoft/hcsshim/internal/schema1 +github.com/Microsoft/hcsshim/internal/wclayer +github.com/Microsoft/hcsshim/internal/cow github.com/Microsoft/hcsshim/internal/interop github.com/Microsoft/hcsshim/internal/log github.com/Microsoft/hcsshim/internal/logfields -github.com/Microsoft/hcsshim/internal/longpath -github.com/Microsoft/hcsshim/internal/mergemaps github.com/Microsoft/hcsshim/internal/oc -github.com/Microsoft/hcsshim/internal/safefile -github.com/Microsoft/hcsshim/internal/schema1 github.com/Microsoft/hcsshim/internal/schema2 github.com/Microsoft/hcsshim/internal/timeout github.com/Microsoft/hcsshim/internal/vmcompute -github.com/Microsoft/hcsshim/internal/wclayer -github.com/Microsoft/hcsshim/osversion +github.com/Microsoft/hcsshim/internal/longpath +github.com/Microsoft/hcsshim/internal/safefile # github.com/VividCortex/ewma v1.1.1 github.com/VividCortex/ewma # github.com/beorn7/perks v1.0.1 @@ -36,161 +36,163 @@ github.com/blang/semver # github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f github.com/containerd/cgroups/stats/v1 # github.com/containerd/containerd v1.3.0 +github.com/containerd/containerd/platforms github.com/containerd/containerd/errdefs +github.com/containerd/containerd/log # github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc github.com/containerd/continuity/fs -github.com/containerd/continuity/syscallx github.com/containerd/continuity/sysx +github.com/containerd/continuity/syscallx # github.com/containernetworking/cni v0.7.1 github.com/containernetworking/cni/libcni +github.com/containernetworking/cni/pkg/version github.com/containernetworking/cni/pkg/invoke github.com/containernetworking/cni/pkg/types github.com/containernetworking/cni/pkg/types/020 github.com/containernetworking/cni/pkg/types/current -github.com/containernetworking/cni/pkg/version # github.com/containers/image/v5 v5.0.0 github.com/containers/image/v5/copy github.com/containers/image/v5/directory -github.com/containers/image/v5/directory/explicitfilepath github.com/containers/image/v5/docker github.com/containers/image/v5/docker/archive -github.com/containers/image/v5/docker/daemon -github.com/containers/image/v5/docker/policyconfiguration github.com/containers/image/v5/docker/reference github.com/containers/image/v5/docker/tarfile github.com/containers/image/v5/image -github.com/containers/image/v5/internal/pkg/keyctl -github.com/containers/image/v5/internal/tmpdir github.com/containers/image/v5/manifest github.com/containers/image/v5/oci/archive -github.com/containers/image/v5/oci/internal github.com/containers/image/v5/oci/layout -github.com/containers/image/v5/openshift -github.com/containers/image/v5/ostree -github.com/containers/image/v5/pkg/blobinfocache -github.com/containers/image/v5/pkg/blobinfocache/boltdb -github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize -github.com/containers/image/v5/pkg/blobinfocache/memory -github.com/containers/image/v5/pkg/blobinfocache/none -github.com/containers/image/v5/pkg/compression -github.com/containers/image/v5/pkg/compression/internal -github.com/containers/image/v5/pkg/compression/types -github.com/containers/image/v5/pkg/docker/config -github.com/containers/image/v5/pkg/strslice github.com/containers/image/v5/pkg/sysregistriesv2 -github.com/containers/image/v5/pkg/tlsclientconfig github.com/containers/image/v5/signature github.com/containers/image/v5/storage -github.com/containers/image/v5/tarball github.com/containers/image/v5/transports github.com/containers/image/v5/transports/alltransports github.com/containers/image/v5/types +github.com/containers/image/v5/pkg/docker/config github.com/containers/image/v5/version +github.com/containers/image/v5/pkg/strslice +github.com/containers/image/v5/pkg/blobinfocache +github.com/containers/image/v5/pkg/compression +github.com/containers/image/v5/directory/explicitfilepath +github.com/containers/image/v5/docker/policyconfiguration +github.com/containers/image/v5/pkg/blobinfocache/none +github.com/containers/image/v5/pkg/tlsclientconfig +github.com/containers/image/v5/internal/tmpdir +github.com/containers/image/v5/oci/internal +github.com/containers/image/v5/docker/daemon +github.com/containers/image/v5/openshift +github.com/containers/image/v5/ostree +github.com/containers/image/v5/tarball +github.com/containers/image/v5/pkg/compression/types +github.com/containers/image/v5/internal/pkg/keyctl +github.com/containers/image/v5/pkg/blobinfocache/boltdb +github.com/containers/image/v5/pkg/blobinfocache/memory +github.com/containers/image/v5/pkg/compression/internal +github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize # github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b github.com/containers/libtrust # github.com/containers/storage v1.13.5 github.com/containers/storage +github.com/containers/storage/pkg/archive +github.com/containers/storage/pkg/chrootarchive +github.com/containers/storage/pkg/fileutils +github.com/containers/storage/pkg/idtools +github.com/containers/storage/pkg/ioutils +github.com/containers/storage/pkg/pools +github.com/containers/storage/pkg/reexec +github.com/containers/storage/pkg/stringid +github.com/containers/storage/pkg/system +github.com/containers/storage/pkg/mount +github.com/containers/storage/pkg/homedir github.com/containers/storage/drivers +github.com/containers/storage/drivers/register +github.com/containers/storage/pkg/config +github.com/containers/storage/pkg/directory +github.com/containers/storage/pkg/lockfile +github.com/containers/storage/pkg/parsers +github.com/containers/storage/pkg/stringutils +github.com/containers/storage/pkg/tarlog +github.com/containers/storage/pkg/truncindex +github.com/containers/storage/pkg/longpath +github.com/containers/storage/pkg/promise github.com/containers/storage/drivers/aufs github.com/containers/storage/drivers/btrfs -github.com/containers/storage/drivers/copy github.com/containers/storage/drivers/devmapper github.com/containers/storage/drivers/overlay -github.com/containers/storage/drivers/overlayutils -github.com/containers/storage/drivers/quota -github.com/containers/storage/drivers/register github.com/containers/storage/drivers/vfs github.com/containers/storage/drivers/windows github.com/containers/storage/drivers/zfs -github.com/containers/storage/pkg/archive -github.com/containers/storage/pkg/chrootarchive -github.com/containers/storage/pkg/config +github.com/containers/storage/pkg/locker github.com/containers/storage/pkg/devicemapper -github.com/containers/storage/pkg/directory github.com/containers/storage/pkg/dmesg -github.com/containers/storage/pkg/fileutils -github.com/containers/storage/pkg/fsutils -github.com/containers/storage/pkg/homedir -github.com/containers/storage/pkg/idtools -github.com/containers/storage/pkg/ioutils -github.com/containers/storage/pkg/locker -github.com/containers/storage/pkg/lockfile -github.com/containers/storage/pkg/longpath github.com/containers/storage/pkg/loopback -github.com/containers/storage/pkg/mount -github.com/containers/storage/pkg/parsers github.com/containers/storage/pkg/parsers/kernel -github.com/containers/storage/pkg/pools -github.com/containers/storage/pkg/promise -github.com/containers/storage/pkg/reexec -github.com/containers/storage/pkg/stringid -github.com/containers/storage/pkg/stringutils -github.com/containers/storage/pkg/system -github.com/containers/storage/pkg/tarlog -github.com/containers/storage/pkg/truncindex +github.com/containers/storage/drivers/overlayutils +github.com/containers/storage/drivers/quota +github.com/containers/storage/pkg/fsutils +github.com/containers/storage/drivers/copy # github.com/cyphar/filepath-securejoin v0.2.2 github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew # github.com/docker/distribution v2.7.1+incompatible -github.com/docker/distribution -github.com/docker/distribution/digestset -github.com/docker/distribution/metrics -github.com/docker/distribution/reference github.com/docker/distribution/registry/api/errcode github.com/docker/distribution/registry/api/v2 github.com/docker/distribution/registry/client +github.com/docker/distribution/reference +github.com/docker/distribution github.com/docker/distribution/registry/client/auth/challenge github.com/docker/distribution/registry/client/transport github.com/docker/distribution/registry/storage/cache github.com/docker/distribution/registry/storage/cache/memory +github.com/docker/distribution/digestset +github.com/docker/distribution/metrics # github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23 -github.com/docker/docker/api -github.com/docker/docker/api/types -github.com/docker/docker/api/types/blkiodev -github.com/docker/docker/api/types/container -github.com/docker/docker/api/types/events -github.com/docker/docker/api/types/filters -github.com/docker/docker/api/types/image -github.com/docker/docker/api/types/mount -github.com/docker/docker/api/types/network +github.com/docker/docker/api/types/versions +github.com/docker/docker/pkg/ioutils +github.com/docker/docker/pkg/homedir github.com/docker/docker/api/types/registry -github.com/docker/docker/api/types/strslice github.com/docker/docker/api/types/swarm -github.com/docker/docker/api/types/swarm/runtime -github.com/docker/docker/api/types/time -github.com/docker/docker/api/types/versions -github.com/docker/docker/api/types/volume -github.com/docker/docker/client -github.com/docker/docker/errdefs github.com/docker/docker/pkg/archive github.com/docker/docker/pkg/fileutils -github.com/docker/docker/pkg/homedir -github.com/docker/docker/pkg/idtools -github.com/docker/docker/pkg/ioutils github.com/docker/docker/pkg/jsonmessage -github.com/docker/docker/pkg/longpath -github.com/docker/docker/pkg/mount -github.com/docker/docker/pkg/pools github.com/docker/docker/pkg/stdcopy github.com/docker/docker/pkg/system +github.com/docker/docker/client +github.com/docker/docker/pkg/longpath +github.com/docker/docker/api/types/container +github.com/docker/docker/api/types/mount +github.com/docker/docker/api/types/network +github.com/docker/docker/api/types/swarm/runtime +github.com/docker/docker/pkg/idtools +github.com/docker/docker/pkg/pools github.com/docker/docker/pkg/term +github.com/docker/docker/pkg/mount +github.com/docker/docker/api +github.com/docker/docker/api/types +github.com/docker/docker/api/types/events +github.com/docker/docker/api/types/filters +github.com/docker/docker/api/types/image +github.com/docker/docker/api/types/time +github.com/docker/docker/api/types/volume +github.com/docker/docker/errdefs +github.com/docker/docker/api/types/blkiodev +github.com/docker/docker/api/types/strslice github.com/docker/docker/pkg/term/windows # github.com/docker/docker-credential-helpers v0.6.1 github.com/docker/docker-credential-helpers/client github.com/docker/docker-credential-helpers/credentials # github.com/docker/go-connections v0.4.0 -github.com/docker/go-connections/nat -github.com/docker/go-connections/sockets github.com/docker/go-connections/tlsconfig +github.com/docker/go-connections/sockets +github.com/docker/go-connections/nat # github.com/docker/go-metrics v0.0.1 github.com/docker/go-metrics # github.com/docker/go-units v0.4.0 github.com/docker/go-units # github.com/docker/libnetwork v0.8.0-dev.2.0.20190625141545-5a177b73e316 github.com/docker/libnetwork/resolvconf -github.com/docker/libnetwork/resolvconf/dns github.com/docker/libnetwork/types +github.com/docker/libnetwork/resolvconf/dns # github.com/etcd-io/bbolt v1.3.3 github.com/etcd-io/bbolt # github.com/fsouza/go-dockerclient v1.6.0 @@ -198,10 +200,10 @@ github.com/fsouza/go-dockerclient # github.com/ghodss/yaml v1.0.0 github.com/ghodss/yaml # github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d -github.com/gogo/protobuf/gogoproto github.com/gogo/protobuf/proto -github.com/gogo/protobuf/protoc-gen-gogo/descriptor github.com/gogo/protobuf/sortkeys +github.com/gogo/protobuf/gogoproto +github.com/gogo/protobuf/protoc-gen-gogo/descriptor # github.com/golang/protobuf v1.3.2 github.com/golang/protobuf/proto github.com/golang/protobuf/ptypes @@ -231,12 +233,12 @@ github.com/inconshreveable/mousetrap # github.com/ishidawataru/sctp v0.0.0-20180918013207-6e2cb1366111 github.com/ishidawataru/sctp # github.com/klauspost/compress v1.8.1 +github.com/klauspost/compress/zstd github.com/klauspost/compress/flate -github.com/klauspost/compress/fse github.com/klauspost/compress/huff0 github.com/klauspost/compress/snappy -github.com/klauspost/compress/zstd github.com/klauspost/compress/zstd/internal/xxhash +github.com/klauspost/compress/fse # github.com/klauspost/cpuid v1.2.1 github.com/klauspost/cpuid # github.com/klauspost/pgzip v1.2.1 @@ -257,68 +259,68 @@ github.com/morikuni/aec github.com/mtrmac/gpgme # github.com/onsi/ginkgo v1.10.3 github.com/onsi/ginkgo -github.com/onsi/ginkgo/config github.com/onsi/ginkgo/extensions/table +github.com/onsi/ginkgo/config github.com/onsi/ginkgo/internal/codelocation -github.com/onsi/ginkgo/internal/containernode github.com/onsi/ginkgo/internal/failer -github.com/onsi/ginkgo/internal/leafnodes github.com/onsi/ginkgo/internal/remote -github.com/onsi/ginkgo/internal/spec -github.com/onsi/ginkgo/internal/spec_iterator -github.com/onsi/ginkgo/internal/specrunner github.com/onsi/ginkgo/internal/suite github.com/onsi/ginkgo/internal/testingtproxy github.com/onsi/ginkgo/internal/writer github.com/onsi/ginkgo/reporters github.com/onsi/ginkgo/reporters/stenographer github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable -github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty github.com/onsi/ginkgo/types +github.com/onsi/ginkgo/internal/spec_iterator +github.com/onsi/ginkgo/internal/containernode +github.com/onsi/ginkgo/internal/leafnodes +github.com/onsi/ginkgo/internal/spec +github.com/onsi/ginkgo/internal/specrunner +github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty # github.com/onsi/gomega v1.7.0 github.com/onsi/gomega -github.com/onsi/gomega/format -github.com/onsi/gomega/gbytes github.com/onsi/gomega/gexec github.com/onsi/gomega/internal/assertion github.com/onsi/gomega/internal/asyncassertion -github.com/onsi/gomega/internal/oraclematcher github.com/onsi/gomega/internal/testingtsupport github.com/onsi/gomega/matchers +github.com/onsi/gomega/types +github.com/onsi/gomega/format +github.com/onsi/gomega/gbytes +github.com/onsi/gomega/internal/oraclematcher github.com/onsi/gomega/matchers/support/goraph/bipartitegraph github.com/onsi/gomega/matchers/support/goraph/edge github.com/onsi/gomega/matchers/support/goraph/node github.com/onsi/gomega/matchers/support/goraph/util -github.com/onsi/gomega/types # github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/go-digest # github.com/opencontainers/image-spec v1.0.2-0.20190823105129-775207bd45b6 github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go/v1 # github.com/opencontainers/runc v1.0.0-rc8.0.20190827142921-dd075602f158 -github.com/opencontainers/runc/libcontainer/apparmor github.com/opencontainers/runc/libcontainer/configs +github.com/opencontainers/runc/libcontainer/apparmor github.com/opencontainers/runc/libcontainer/devices github.com/opencontainers/runc/libcontainer/system github.com/opencontainers/runc/libcontainer/user # github.com/opencontainers/runtime-spec v0.1.2-0.20190618234442-a950415649c7 github.com/opencontainers/runtime-spec/specs-go # github.com/opencontainers/runtime-tools v0.9.0 -github.com/opencontainers/runtime-tools/error -github.com/opencontainers/runtime-tools/filepath github.com/opencontainers/runtime-tools/generate github.com/opencontainers/runtime-tools/generate/seccomp -github.com/opencontainers/runtime-tools/specerror github.com/opencontainers/runtime-tools/validate +github.com/opencontainers/runtime-tools/filepath +github.com/opencontainers/runtime-tools/specerror +github.com/opencontainers/runtime-tools/error # github.com/opencontainers/selinux v1.3.0 github.com/opencontainers/selinux/go-selinux github.com/opencontainers/selinux/go-selinux/label # github.com/openshift/api v3.9.1-0.20190810003144-27fb16909b15+incompatible github.com/openshift/api/config/v1 -# github.com/openshift/imagebuilder v1.1.1 +# github.com/openshift/imagebuilder v1.1.1-0.20191118051649-22563141c8d6 github.com/openshift/imagebuilder -github.com/openshift/imagebuilder/dockerfile/command github.com/openshift/imagebuilder/dockerfile/parser +github.com/openshift/imagebuilder/dockerfile/command github.com/openshift/imagebuilder/signal github.com/openshift/imagebuilder/strslice # github.com/ostreedev/ostree-go v0.0.0-20190702140239-759a8c1ac913 @@ -330,19 +332,19 @@ github.com/pkg/errors github.com/pmezard/go-difflib/difflib # github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9 github.com/pquerna/ffjson/fflib/v1 -github.com/pquerna/ffjson/fflib/v1/internal github.com/pquerna/ffjson/inception github.com/pquerna/ffjson/shared +github.com/pquerna/ffjson/fflib/v1/internal # github.com/prometheus/client_golang v1.1.0 github.com/prometheus/client_golang/prometheus -github.com/prometheus/client_golang/prometheus/internal github.com/prometheus/client_golang/prometheus/promhttp +github.com/prometheus/client_golang/prometheus/internal # github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 github.com/prometheus/client_model/go # github.com/prometheus/common v0.6.0 github.com/prometheus/common/expfmt -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg github.com/prometheus/common/model +github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg # github.com/prometheus/procfs v0.0.5 github.com/prometheus/procfs github.com/prometheus/procfs/internal/fs @@ -365,17 +367,17 @@ github.com/syndtr/gocapability/capability github.com/tchap/go-patricia/patricia # github.com/ulikunitz/xz v0.5.6 github.com/ulikunitz/xz -github.com/ulikunitz/xz/internal/hash github.com/ulikunitz/xz/internal/xlog github.com/ulikunitz/xz/lzma +github.com/ulikunitz/xz/internal/hash # github.com/vbatts/tar-split v0.11.1 github.com/vbatts/tar-split/archive/tar github.com/vbatts/tar-split/tar/asm github.com/vbatts/tar-split/tar/storage # github.com/vbauerster/mpb v3.4.0+incompatible github.com/vbauerster/mpb -github.com/vbauerster/mpb/cwriter github.com/vbauerster/mpb/decor +github.com/vbauerster/mpb/cwriter github.com/vbauerster/mpb/internal # github.com/xeipuuv/gojsonpointer v0.0.0-20190809123943-df4f5c81cb3b github.com/xeipuuv/gojsonpointer @@ -384,66 +386,66 @@ github.com/xeipuuv/gojsonreference # github.com/xeipuuv/gojsonschema v1.1.0 github.com/xeipuuv/gojsonschema # go.opencensus.io v0.22.0 -go.opencensus.io -go.opencensus.io/internal go.opencensus.io/trace +go.opencensus.io/internal go.opencensus.io/trace/internal go.opencensus.io/trace/tracestate +go.opencensus.io # golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad -golang.org/x/crypto/cast5 +golang.org/x/crypto/ssh/terminal golang.org/x/crypto/openpgp golang.org/x/crypto/openpgp/armor -golang.org/x/crypto/openpgp/elgamal golang.org/x/crypto/openpgp/errors golang.org/x/crypto/openpgp/packet golang.org/x/crypto/openpgp/s2k -golang.org/x/crypto/ssh/terminal +golang.org/x/crypto/cast5 +golang.org/x/crypto/openpgp/elgamal # golang.org/x/net v0.0.0-20190628185345-da137c7871d7 golang.org/x/net/context -golang.org/x/net/html -golang.org/x/net/html/atom -golang.org/x/net/html/charset -golang.org/x/net/http/httpguts golang.org/x/net/http2 +golang.org/x/net/proxy +golang.org/x/net/http/httpguts golang.org/x/net/http2/hpack golang.org/x/net/idna +golang.org/x/net/html/charset golang.org/x/net/internal/socks -golang.org/x/net/proxy +golang.org/x/net/html +golang.org/x/net/html/atom # golang.org/x/sync v0.0.0-20190423024810-112230192c58 -golang.org/x/sync/errgroup golang.org/x/sync/semaphore +golang.org/x/sync/errgroup # golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 golang.org/x/sys/unix golang.org/x/sys/windows # golang.org/x/text v0.3.2 +golang.org/x/text/secure/bidirule +golang.org/x/text/unicode/bidi +golang.org/x/text/unicode/norm golang.org/x/text/encoding golang.org/x/text/encoding/charmap golang.org/x/text/encoding/htmlindex -golang.org/x/text/encoding/internal +golang.org/x/text/transform golang.org/x/text/encoding/internal/identifier +golang.org/x/text/encoding/internal golang.org/x/text/encoding/japanese golang.org/x/text/encoding/korean golang.org/x/text/encoding/simplifiedchinese golang.org/x/text/encoding/traditionalchinese golang.org/x/text/encoding/unicode +golang.org/x/text/language +golang.org/x/text/internal/utf8internal +golang.org/x/text/runes golang.org/x/text/internal/language golang.org/x/text/internal/language/compact golang.org/x/text/internal/tag -golang.org/x/text/internal/utf8internal -golang.org/x/text/language -golang.org/x/text/runes -golang.org/x/text/secure/bidirule -golang.org/x/text/transform -golang.org/x/text/unicode/bidi -golang.org/x/text/unicode/norm # google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb google.golang.org/genproto/googleapis/rpc/status # google.golang.org/grpc v1.24.0 google.golang.org/grpc/codes +google.golang.org/grpc/status +google.golang.org/grpc/internal google.golang.org/grpc/connectivity google.golang.org/grpc/grpclog -google.golang.org/grpc/internal -google.golang.org/grpc/status # gopkg.in/fsnotify.v1 v1.4.7 gopkg.in/fsnotify.v1 # gopkg.in/inf.v0 v0.9.0 @@ -455,27 +457,27 @@ gopkg.in/yaml.v2 # k8s.io/api v0.0.0-20190813020757-36bff7324fb7 k8s.io/api/core/v1 # k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010 -k8s.io/apimachinery/pkg/api/resource k8s.io/apimachinery/pkg/apis/meta/v1 +k8s.io/apimachinery/pkg/runtime +k8s.io/apimachinery/pkg/runtime/schema +k8s.io/apimachinery/pkg/api/resource +k8s.io/apimachinery/pkg/types +k8s.io/apimachinery/pkg/util/intstr k8s.io/apimachinery/pkg/conversion -k8s.io/apimachinery/pkg/conversion/queryparams k8s.io/apimachinery/pkg/fields k8s.io/apimachinery/pkg/labels -k8s.io/apimachinery/pkg/runtime -k8s.io/apimachinery/pkg/runtime/schema k8s.io/apimachinery/pkg/selection -k8s.io/apimachinery/pkg/types +k8s.io/apimachinery/pkg/util/runtime +k8s.io/apimachinery/pkg/watch +k8s.io/apimachinery/pkg/conversion/queryparams k8s.io/apimachinery/pkg/util/errors -k8s.io/apimachinery/pkg/util/intstr k8s.io/apimachinery/pkg/util/json k8s.io/apimachinery/pkg/util/naming -k8s.io/apimachinery/pkg/util/net -k8s.io/apimachinery/pkg/util/runtime k8s.io/apimachinery/pkg/util/sets +k8s.io/apimachinery/third_party/forked/golang/reflect k8s.io/apimachinery/pkg/util/validation +k8s.io/apimachinery/pkg/util/net k8s.io/apimachinery/pkg/util/validation/field -k8s.io/apimachinery/pkg/watch -k8s.io/apimachinery/third_party/forked/golang/reflect # k8s.io/client-go v0.0.0-20181219152756-3dd551c0f083 k8s.io/client-go/util/homedir # k8s.io/klog v0.3.1