From 8804439a1ba7bdc8be26d4682656ad01d16c773c Mon Sep 17 00:00:00 2001 From: Birol Bilgin Date: Fri, 15 May 2020 16:21:48 +0200 Subject: [PATCH 01/20] added vmware metadata provider cloud-init data from vmware guest info as it described in the link below https://github.com/vmware/cloud-init-vmware-guestinfo Signed-off-by: Birol Bilgin --- pkg/metadata/main.go | 4 +- pkg/metadata/provider_vmware.go | 128 ++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 pkg/metadata/provider_vmware.go diff --git a/pkg/metadata/main.go b/pkg/metadata/main.go index 2c4550bae0..4bacbf6403 100644 --- a/pkg/metadata/main.go +++ b/pkg/metadata/main.go @@ -78,7 +78,7 @@ func main() { log.SetLevel(log.DebugLevel) } - providers := []string{"aws", "gcp", "hetzner", "openstack", "scaleway", "vultr", "digitalocean", "packet", "cdrom"} + providers := []string{"aws", "gcp", "hetzner", "openstack", "scaleway", "vultr", "digitalocean", "packet", "cdrom", "vmware"} args := flag.Args() if len(args) > 0 { providers = args @@ -103,6 +103,8 @@ func main() { netProviders = append(netProviders, NewDigitalOcean()) case p == "cdrom": cdromProviders = ListCDROMs() + case p == "vmware": + cdromProviders = append(cdromProviders, NewVMware()) case strings.HasPrefix(p, "file="): fileProviders = append(fileProviders, fileProvider(p[5:])) default: diff --git a/pkg/metadata/provider_vmware.go b/pkg/metadata/provider_vmware.go new file mode 100644 index 0000000000..006f78a8ef --- /dev/null +++ b/pkg/metadata/provider_vmware.go @@ -0,0 +1,128 @@ +package main + +import ( + "bytes" + "compress/gzip" + "encoding/base64" + "fmt" + "io/ioutil" + "os/exec" + "path" + "strings" + + log "github.com/sirupsen/logrus" +) + +const ( + guestMetaData = "guestinfo.metadata" + + guestUserData = "guestinfo.userdata" +) + +// ProviderVMware is the type implementing the Provider interface for VMware +type ProviderVMware struct { + cmd string +} + +// NewVMware returns a new ProviderVMware +func NewVMware() *ProviderVMware { + return &ProviderVMware{} +} + +func (p *ProviderVMware) String() string { + return "VMWARE" +} + +// Probe checks if we are running on VMware +func (p *ProviderVMware) Probe() bool { + c, err := exec.LookPath("vmware-rpctool") + if err != nil { + log.Debugf("Look for vmware-rcptool failed %v", err) + return false + } + + p.cmd = c + + b, err := p.vmwareGet(guestMetaData) + return (err == nil) && len(b) > 0 && string(b) != " " && string(b) != "---" +} + +// Extract gets both the AWS specific and generic userdata +func (p *ProviderVMware) Extract() ([]byte, error) { + // Get host name. This must not fail + metaData, err := p.vmwareGet(guestMetaData) + if err != nil { + return nil, err + } + + err = ioutil.WriteFile(path.Join(ConfigPath, "metadata"), metaData, 0644) + if err != nil { + return nil, fmt.Errorf("VMWare: Failed to write metadata: %s", err) + } + + // Generic userdata + userData, err := p.vmwareGet(guestUserData) + if err != nil { + log.Printf("VMware: Failed to get user-data: %s", err) + // This is not an error + return nil, nil + } + + return userData, nil +} + +// vmwareGet gets and extracts the guest data +func (p *ProviderVMware) vmwareGet(name string) ([]byte, error) { + cmdArg := func(n string) string { + return fmt.Sprintf("info-get %s", n) + } + // get the gusest info value + out, err := exec.Command(p.cmd, cmdArg(name)).Output() + if err != nil { + eErr := err.(*exec.ExitError) + log.Debugf("Getting guest info %s failed: error %s", cmdArg(name), string(eErr.Stderr)) + return nil, err + } + + enc, err := exec.Command(p.cmd, cmdArg(name+".encoding")).Output() + if err != nil { + eErr := err.(*exec.ExitError) + log.Debugf("Getting guest info %s.encoding failed: error %s", name, string(eErr.Stderr)) + return nil, err + } + + //out = bytes.TrimSuffix(out, []byte("\n")) + + switch strings.TrimSuffix(string(enc), "\n") { + case " ": + return bytes.TrimSuffix(out, []byte("\n")), nil + case "base64": + dst := make([]byte, base64.StdEncoding.DecodedLen(len(out))) + + _, err = base64.StdEncoding.Decode(dst, out) + if err != nil { + log.Debugf("Decoding base64 of '%s' failed %v", name, err) + return nil, err + } + + return dst, nil + case "gzip+base64": + r := base64.NewDecoder(base64.StdEncoding, bytes.NewBuffer(out)) + + zr, err := gzip.NewReader(r) + if err != nil { + log.Debugf("New gzip reader from '%s' failed %v", name, err) + return nil, err + } + + dst, err := ioutil.ReadAll(zr) + if err != nil { + log.Debugf("Read '%s' failed %v", name, err) + return nil, err + } + + return dst, nil + default: + return nil, fmt.Errorf("Unknown encoding %s", string(enc)) + } +} From 3323db075613b1705ca6b953c4d222f8bc7107ad Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Sun, 26 Apr 2020 11:13:15 +0300 Subject: [PATCH 02/20] support merge yaml flags Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- docs/yaml.md | 8 ++++-- examples/addbinds.yml | 29 +++++++++++++++++++++ src/cmd/linuxkit/moby/config.go | 34 +++++++++++++++++++++++-- src/cmd/linuxkit/moby/schema.go | 2 ++ test/cases/000_build/020_binds/check.sh | 15 +++++++++++ test/cases/000_build/020_binds/test.sh | 27 ++++++++++++++++++++ test/cases/000_build/020_binds/test.yml | 28 ++++++++++++++++++++ 7 files changed, 139 insertions(+), 4 deletions(-) create mode 100644 examples/addbinds.yml create mode 100755 test/cases/000_build/020_binds/check.sh create mode 100755 test/cases/000_build/020_binds/test.sh create mode 100644 test/cases/000_build/020_binds/test.yml diff --git a/docs/yaml.md b/docs/yaml.md index c04fabfc59..82eeb47dcc 100644 --- a/docs/yaml.md +++ b/docs/yaml.md @@ -13,7 +13,7 @@ so it can be tested reliably for continuous delivery. Components are specified as Docker images which are pulled from a registry during build if they are not available locally. The Docker images are optionally verified with Docker Content Trust. For private registries or private repositories on a registry credentials provided via -`docker login` are re-used. +`docker login` are re-used. The configuration file is processed in the order `kernel`, `init`, `onboot`, `onshutdown`, `services`, `files`. Each section adds files to the root file system. Sections may be omitted. @@ -144,7 +144,9 @@ options. Default values may be specified using the `org.mobyproject.config` imag For more details see the [OCI specification](https://github.com/opencontainers/runtime-spec/blob/master/spec.md). If the `org.mobylinux.config` label is set in the image, that specifies default values for these fields if they -are not set in the yaml file. You can override the label by setting the value, or setting it to be empty to remove +are not set in the yaml file. While most fields are _replaced_ if they are specified in the yaml file, +some support _add_ via the format `.add`; see below. +You can override the label entirely by setting the value, or setting it to be empty to remove the specification for that value in the label. If you need an OCI option that is not specified here please open an issue or pull request as the list is not yet @@ -159,6 +161,7 @@ bind mounted into a container. extracted from this so they need not be filled in. - `capabilities` the Linux capabilities required, for example `CAP_SYS_ADMIN`. If there is a single capability `all` then all capabilities are added. +- `capabilities.add` the Linux capabilities required, but these are added to the defaults, rather than overriding them. - `ambient` the Linux ambient capabilities (capabilities passed to non root users) that are required. - `mounts` is the full form for specifying a mount, which requires `type`, `source`, `destination` and a list of `options`. If any fields are omitted, sensible defaults are used if possible, for example @@ -166,6 +169,7 @@ bind mounted into a container. can be replaced by specifying a mount with new options here at the same mount point. - `binds` is a simpler interface to specify bind mounts, accepting a string like `/src:/dest:opt1,opt2` similar to the `-v` option for bind mounts in Docker. +- `binds.add` is a simpler interface to specify bind mounts, but these are added to the defaults, rather than overriding them. - `tmpfs` is a simpler interface to mount a `tmpfs`, like `--tmpfs` in Docker, taking `/dest:opt1,opt2`. - `command` will override the command and entrypoint in the image with a new list of commands. - `env` will override the environment in the image with a new environment list. Specify variables as `VAR=value`. diff --git a/examples/addbinds.yml b/examples/addbinds.yml new file mode 100644 index 0000000000..7b443145c2 --- /dev/null +++ b/examples/addbinds.yml @@ -0,0 +1,29 @@ +kernel: + image: linuxkit/kernel:5.4.30 + cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" +init: + - linuxkit/init:7195dc244cd92af01fd0895fd204249a6114c5e2 + - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 + - linuxkit/containerd:8ee7a0d636fff9df7e13076f5492d06274e5f644 + - linuxkit/ca-certificates:abfc6701b9ca17e34ac9439ce5946a247e720ff5 +onboot: + - name: sysctl + image: linuxkit/sysctl:541f60fe3676611328e89e8bac251fc636b1a6aa + - name: dhcpcd + image: linuxkit/dhcpcd:2f8a9b670aa6e96a09db56ec45c9f07ef2a811ee + command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"] +services: + - name: getty + image: linuxkit/getty:48f66df198981e692084bf70ab72b9fe2be0f880 + binds.add: + # this will keep all of the existing ones as well + - /var/tmp:/var/tmp + - name: rngd + image: linuxkit/rngd:7fab61cca793113280397dcee8159f35dc37adcb +files: + - path: etc/getty.shadow + # sample sets password for root to "abcdefgh" (without quotes) + contents: 'root:$6$6tPd2uhHrecCEKug$8mKfcgfwguP7f.BLdZsT1Wz7WIIJOBY1oUFHzIv9/O71M2J0EPdtFqFGTxB1UK5ejqQxRFQ.ZSG9YXR0SNsc11:17322:0:::::' +trust: + org: + - linuxkit diff --git a/src/cmd/linuxkit/moby/config.go b/src/cmd/linuxkit/moby/config.go index bb8e1ac23c..89710a29be 100644 --- a/src/cmd/linuxkit/moby/config.go +++ b/src/cmd/linuxkit/moby/config.go @@ -71,9 +71,11 @@ type Image struct { // Everything except Runtime and ref is used to build the OCI spec type ImageConfig struct { Capabilities *[]string `yaml:"capabilities,omitempty" json:"capabilities,omitempty"` + CapabilitiesAdd *[]string `yaml:"capabilities.add,omitempty" json:"capabilities.add,omitempty"` Ambient *[]string `yaml:"ambient,omitempty" json:"ambient,omitempty"` Mounts *[]specs.Mount `yaml:"mounts,omitempty" json:"mounts,omitempty"` Binds *[]string `yaml:"binds,omitempty" json:"binds,omitempty"` + BindsAdd *[]string `yaml:"binds.add,omitempty" json:"binds.add,omitempty"` Tmpfs *[]string `yaml:"tmpfs,omitempty" json:"tmpfs,omitempty"` Command *[]string `yaml:"command,omitempty" json:"command,omitempty"` Env *[]string `yaml:"env,omitempty" json:"env,omitempty"` @@ -505,6 +507,34 @@ func assignStrings3(v1 []string, v2, v3 *[]string) []string { return v1 } +// mergeStrings does ordered unique merge between JSON string array pointers +func mergeStrings(v1, v2 *[]string) *[]string { + switch { + case v2 == nil && v1 == nil: + return &[]string{} + case v2 == nil: + return v1 + case v1 == nil: + return v2 + } + // merge the two uniquely + ret := []string{} + m := make(map[string]bool) + for _, s := range *v1 { + if m[s] { + continue + } + ret = append(ret, s) + } + for _, s := range *v2 { + if m[s] { + continue + } + ret = append(ret, s) + } + return &ret +} + // assignMaps does ordered overrides from JSON string map pointers func assignMaps(v1, v2 *map[string]string) map[string]string { if v2 != nil { @@ -770,7 +800,7 @@ func ConfigInspectToOCI(yaml *Image, inspect types.ImageInspect, idMap map[strin } mounts[dest] = specs.Mount{Destination: dest, Type: "tmpfs", Source: "tmpfs", Options: opts} } - for _, b := range assignStrings(label.Binds, yaml.Binds) { + for _, b := range assignStrings(mergeStrings(label.Binds, yaml.BindsAdd), yaml.Binds) { parts := strings.Split(b, ":") if len(parts) < 2 { return oci, runtime, fmt.Errorf("Cannot parse bind, missing ':': %s", b) @@ -880,7 +910,7 @@ func ConfigInspectToOCI(yaml *Image, inspect types.ImageInspect, idMap map[strin capCheck[capability] = true } boundingSet := map[string]bool{} - caps := assignStrings(label.Capabilities, yaml.Capabilities) + caps := assignStrings(mergeStrings(label.Capabilities, yaml.CapabilitiesAdd), yaml.Capabilities) if len(caps) == 1 { switch cap := strings.ToLower(caps[0]); cap { case "none": diff --git a/src/cmd/linuxkit/moby/schema.go b/src/cmd/linuxkit/moby/schema.go index 9379098f41..06a52a4148 100644 --- a/src/cmd/linuxkit/moby/schema.go +++ b/src/cmd/linuxkit/moby/schema.go @@ -260,9 +260,11 @@ var schema = string(` "name": {"type": "string"}, "image": {"type": "string"}, "capabilities": { "$ref": "#/definitions/strings" }, + "capabilities.add": { "$ref": "#/definitions/strings" }, "ambient": { "$ref": "#/definitions/strings" }, "mounts": { "$ref": "#/definitions/mounts" }, "binds": { "$ref": "#/definitions/strings" }, + "binds.add": { "$ref": "#/definitions/strings" }, "tmpfs": { "$ref": "#/definitions/strings" }, "command": { "$ref": "#/definitions/strings" }, "env": { "$ref": "#/definitions/strings" }, diff --git a/test/cases/000_build/020_binds/check.sh b/test/cases/000_build/020_binds/check.sh new file mode 100755 index 0000000000..2a0dcc2d0a --- /dev/null +++ b/test/cases/000_build/020_binds/check.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +function failed { + printf "bindmerge test suite FAILED\n" >&1 + exit 1 +} + +# the very fact that this is running means that the bind worked, so just need to check that the defaults also +# are there + +[ -d /dev/mapper ] || failed +[ -d /hostroot ] || failed +printf "bindmerge test suite PASSED\n" >&1 diff --git a/test/cases/000_build/020_binds/test.sh b/test/cases/000_build/020_binds/test.sh new file mode 100755 index 0000000000..4c2a4091ef --- /dev/null +++ b/test/cases/000_build/020_binds/test.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# SUMMARY: Check that the userdata is found and read when on a cidata partition +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=bindtest +DISK=disk.img + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build -format kernel+initrd -name ${NAME} test.yml +RESULT="$(linuxkit run -disk file=${DISK},size=32M ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/020_binds/test.yml b/test/cases/000_build/020_binds/test.yml new file mode 100644 index 0000000000..714d99594a --- /dev/null +++ b/test/cases/000_build/020_binds/test.yml @@ -0,0 +1,28 @@ +kernel: + image: linuxkit/kernel:5.4.30 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:7195dc244cd92af01fd0895fd204249a6114c5e2 + - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 +onboot: + - name: mount + image: linuxkit/mount:19fa297189166206ac97261679c3e31fb140d48f + binds.add: + - /check.sh:/check.sh + - /var/tmp:/var/tmp + # default binds from linuxkit/mount + # - /dev:/dev + # - /var:/var:rshared,rbind + # - /:/hostroot + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:06dd4e46c62fbe79123a028835c921f80e4855d3 + command: ["/bin/sh", "/poweroff.sh", "10"] +files: + - path: check.sh + source: ./check.sh + mode: "0700" +trust: + org: + - linuxkit + - library From cce5394ac813ca3de6461981480df2b66277e470 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Sun, 10 May 2020 22:05:48 +0300 Subject: [PATCH 03/20] options to split image steps and manifest steps Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- docs/packages.md | 104 ++++++++++++++++++++++-------- src/cmd/linuxkit/pkg_push.go | 13 ++++ src/cmd/linuxkit/pkglib/build.go | 37 +++++++++-- src/cmd/linuxkit/pkglib/docker.go | 45 +++++++++---- 4 files changed, 156 insertions(+), 43 deletions(-) diff --git a/docs/packages.md b/docs/packages.md index 8f3231afdc..90fa09866d 100644 --- a/docs/packages.md +++ b/docs/packages.md @@ -7,7 +7,7 @@ packages, as it's very easy. Packages are the unit of customisation in a LinuxKit-based project, if you know how to build a container, you should be able to build a LinuxKit package. -All LinuxKit packages are: +All official LinuxKit packages are: - Signed with Docker Content Trust. - Enabled with multi-arch manifests to work on multiple architectures. - Derived from well-known (and signed) sources for repeatable builds. @@ -15,6 +15,7 @@ All LinuxKit packages are: ## CI and Package Builds + When building and merging packages, it is important to note that our CI process builds packages. The targets `make ci` and `make ci-pr` execute `make -C pkg build`. These in turn execute `linuxkit pkg build` for each package under `pkg/`. This in turn will try to pull the image whose tag matches the tree hash or, failing that, to build it. We do not want the builds to happen with each CI run for two reasons: @@ -73,38 +74,89 @@ should also be set up with signing keys for packages and your signing key should have a passphrase, which we call `` throughout. All official LinuxKit packages are multi-arch manifests and most of -them are available for `amd64`, `arm64`, and `s390x`. Official images -*must* be build on both architectures and they must be build *in -sequence*, i.e., they can't be build in parallel. +them are available for the following platforms: -To build a package on an architecture: +* `linux/amd64` +* `linux/arm64` +* `linux/s390x` -``` -DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="" linuxkit pkg push «path-to-package» -``` +Official images *must* be built on all architectures for which they are available. +They can be built and pushed in parallel, but the manifest should be pushed once +when all of the images are done. + +Pushing out a package as a maintainer involves two distinct stages: -`«path-to-package»` is the path to the package's source directory +1. Building and pushing out the platform-specific image +1. Creating, pushing out and signing the multi-arch manifest, a.k.a. OCI image index + +The `linuxkit pkg` command contains automation which performs all of the steps. +Note that `«path-to-package»` is the path to the package's source directory (containing at least `build.yml` and `Dockerfile`). It can be `.` if the package is in the current directory. -**Note:** You *must* be logged into hub (`docker login`) and the -passphrase for the key *must* be supplied as an environment -variable. The build process has to resort to using `expect` to drive -`notary` so none of the credentials can be entered interactively. - -This will: -- Build a local images as `linuxkit/:-` -- Push it to hub -- Sign it with your key -- Create a manifest called `linuxkit/:` (note no `-`) -- Push the manifest to hub -- Sign the manifest - -If you repeat the same on another architecture, a new manifest will be -pushed and signed containing the previous and the new -architecture. The YAML files should consume the package as: + +#### Image Only + +To build and push out the platform-specific image, on that platform: + +``` +linuxkit pkg push --manifest=false «path-to-package» +``` + +The options do the following: + +* `--manifest=false` means not to push or sign a manifest + +Repeat the above on each platform where you need an image. + +This will do the following: + +1. Determine the name and tag for the image as follows: + * The tag is from the hash of the git tree for that package. You can see it by doing `linuxkit pkg show-tag «path-to-package»`. + * The name for the image is from `«path-to-package»/build.yml` + * The organization for the package is given on the command-line, default to `linuxkit`. +1. Build the package in the given path using your local docker instance for the local platform. E.g. if you are running on `linux/arm64`, it will build for `linux/arm64`. +1. Tag the build image as `«image-name»:«hash»-«arch»` +1. Push the image to the hub + +#### Manifest Only + +To perform just the manifest steps, do: + +``` +DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="" linuxkit pkg push --image=false --manifest «path-to-package» +``` + +The options do the following: + +* `--image=false` do not push the image, as you already did it; you can, of course, skip this argument and push the image as well +* `--manifest` create and push the manifest + +This will do the following: + +1. Find all of the images on the hub of the format `«image-name»:«hash»-«arch»` +1. Create a multi-arch manifest called `«image-name»:«hash»` (note no `-«arch»`) +1. Push the manifest to the hub +1. Sign the manifest with your key + +Each time you perform the manifest steps, it will find all of the images, +including any that have been added since last time. +The LinuxKit YAML files should consume the package as the multi-arch manifest: `linuxkit/:`. +#### Everything at once + +To perform _all_ of the steps at once - build and push out the image for whatever platform +you are running on, and create and sign a manifest - do: + +``` +DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="" linuxkit pkg push «path-to-package» +``` + +#### Prerequisites + +* For all of the steps, you *must* be logged into hub (`docker login`). +* For the manifest steps, you must be logged into hub and the passphrase for the key *must* be supplied as an environment variable. The build process has to resort to using `expect` to drive `notary` so none of the credentials can be entered interactively. Since it is not very good to have your passphrase in the clear (or even stashed in your shell history), we recommend using a password @@ -173,5 +225,5 @@ if you want to use it, you will need to add the following line to the dockerfile ARG all_proxy ``` -Linuxkit does not judge between lower-cased or upper-cased variants of these options, e.g. `http_proxy` vs `HTTP_PROXY`, +LinuxKit does not judge between lower-cased or upper-cased variants of these options, e.g. `http_proxy` vs `HTTP_PROXY`, as `docker build` does not either. It just passes them through "as-is". diff --git a/src/cmd/linuxkit/pkg_push.go b/src/cmd/linuxkit/pkg_push.go index bb181ffbb9..2a389c07de 100644 --- a/src/cmd/linuxkit/pkg_push.go +++ b/src/cmd/linuxkit/pkg_push.go @@ -22,6 +22,9 @@ func pkgPush(args []string) { force := flags.Bool("force", false, "Force rebuild") release := flags.String("release", "", "Release the given version") nobuild := flags.Bool("nobuild", false, "Skip the build") + manifest := flags.Bool("manifest", true, "Create and push multi-arch manifest") + image := flags.Bool("image", true, "Build and push image for the current platform") + sign := flags.Bool("sign", true, "sign the manifest, if a manifest is created; ignored if --manifest=false") p, err := pkglib.NewFromCLI(flags, args...) if err != nil { @@ -44,6 +47,16 @@ func pkgPush(args []string) { if *release != "" { opts = append(opts, pkglib.WithRelease(*release)) } + if *manifest { + opts = append(opts, pkglib.WithBuildManifest()) + } + if *image { + opts = append(opts, pkglib.WithBuildImage()) + } + // only sign manifests; ignore for image only + if *sign && *manifest { + opts = append(opts, pkglib.WithBuildSign()) + } if *nobuild { fmt.Printf("Pushing %q without building\n", p.Tag()) diff --git a/src/cmd/linuxkit/pkglib/build.go b/src/cmd/linuxkit/pkglib/build.go index 0883d4bab0..0d822aa5f7 100644 --- a/src/cmd/linuxkit/pkglib/build.go +++ b/src/cmd/linuxkit/pkglib/build.go @@ -18,6 +18,9 @@ type buildOpts struct { force bool push bool release string + manifest bool + sign bool + image bool } // BuildOpt allows callers to specify options to Build @@ -47,6 +50,30 @@ func WithBuildPush() BuildOpt { } } +// WithBuildImage builds the image +func WithBuildImage() BuildOpt { + return func(bo *buildOpts) error { + bo.image = true + return nil + } +} + +// WithBuildManifest creates a multi-arch manifest for the image +func WithBuildManifest() BuildOpt { + return func(bo *buildOpts) error { + bo.manifest = true + return nil + } +} + +// WithBuildSign signs the image and/or the index +func WithBuildSign() BuildOpt { + return func(bo *buildOpts) error { + bo.sign = true + return nil + } +} + // WithRelease releases as the given version after push func WithRelease(r string) BuildOpt { return func(bo *buildOpts) error { @@ -64,7 +91,7 @@ func (p Pkg) Build(bos ...BuildOpt) error { } } - if _, ok := os.LookupEnv("DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE"); !ok && p.trust && bo.push { + if _, ok := os.LookupEnv("DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE"); !ok && bo.sign && p.trust && bo.push { return fmt.Errorf("Pushing with trust enabled requires $DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE to be set") } @@ -98,7 +125,7 @@ func (p Pkg) Build(bos ...BuildOpt) error { return fmt.Errorf("Cannot release %q if not pushing", bo.release) } - d := newDockerRunner(p.trust, p.cache) + d := newDockerRunner(p.trust, p.cache, bo.sign) if !bo.force { ok, err := d.pull(p.Tag()) @@ -111,7 +138,7 @@ func (p Pkg) Build(bos ...BuildOpt) error { fmt.Println("No image pulled, continuing with build") } - if !bo.skipBuild { + if bo.image && !bo.skipBuild { var args []string if err := p.dockerDepends.Do(d); err != nil { @@ -171,7 +198,7 @@ func (p Pkg) Build(bos ...BuildOpt) error { // matters given we do either pull or build above in the // !force case. - if err := d.pushWithManifest(p.Tag(), suffix); err != nil { + if err := d.pushWithManifest(p.Tag(), suffix, bo.image, bo.manifest, bo.sign); err != nil { return err } @@ -189,7 +216,7 @@ func (p Pkg) Build(bos ...BuildOpt) error { return err } - if err := d.pushWithManifest(relTag, suffix); err != nil { + if err := d.pushWithManifest(relTag, suffix, bo.image, bo.manifest, bo.sign); err != nil { return err } diff --git a/src/cmd/linuxkit/pkglib/docker.go b/src/cmd/linuxkit/pkglib/docker.go index 057b9d6609..af12f7ba21 100644 --- a/src/cmd/linuxkit/pkglib/docker.go +++ b/src/cmd/linuxkit/pkglib/docker.go @@ -39,6 +39,7 @@ var platforms = []string{ type dockerRunner struct { dct bool cache bool + sign bool // Optional build context to use ctx buildContext @@ -49,8 +50,8 @@ type buildContext interface { Copy(io.WriteCloser) error } -func newDockerRunner(dct, cache bool) dockerRunner { - return dockerRunner{dct: dct, cache: cache} +func newDockerRunner(dct, cache, sign bool) dockerRunner { + return dockerRunner{dct: dct, cache: cache, sign: sign} } func isExecErrNotFound(err error) bool { @@ -83,7 +84,10 @@ func (dr dockerRunner) command(args ...string) error { cmd.Env = os.Environ() dct := "" - if dr.dct { + + // when we are doing a push, we need to disable DCT if not signing + isPush := len(args) >= 2 && args[0] == "image" && args[1] == "push" + if dr.dct && (!isPush || dr.sign) { cmd.Env = append(cmd.Env, dctEnableEnv) dct = dctEnableEnv + " " } @@ -147,10 +151,19 @@ func (dr dockerRunner) push(img string) error { return dr.command("image", "push", img) } -func (dr dockerRunner) pushWithManifest(img, suffix string) error { - fmt.Printf("Pushing %s\n", img+suffix) - if err := dr.push(img + suffix); err != nil { - return err +func (dr dockerRunner) pushWithManifest(img, suffix string, pushImage, pushManifest, sign bool) error { + var ( + digest string + l int + err error + ) + if pushImage { + fmt.Printf("Pushing %s\n", img+suffix) + if err := dr.push(img + suffix); err != nil { + return err + } + } else { + fmt.Print("Image push disabled, skipping...\n") } auth, err := getDockerAuth() @@ -158,16 +171,24 @@ func (dr dockerRunner) pushWithManifest(img, suffix string) error { return fmt.Errorf("failed to get auth: %v", err) } - fmt.Printf("Pushing %s to manifest %s\n", img+suffix, img) - digest, l, err := manifestPush(img, auth) - if err != nil { - return err + if pushManifest { + fmt.Printf("Pushing %s to manifest %s\n", img+suffix, img) + digest, l, err = manifestPush(img, auth) + if err != nil { + return err + } + } else { + fmt.Print("Manifest push disabled, skipping...\n") } // if trust is not enabled, nothing more to do if !dr.dct { fmt.Println("trust disabled, not signing") return nil } + if !sign { + fmt.Println("signing disabled, not signing") + return nil + } fmt.Printf("Signing manifest for %s\n", img) return signManifest(img, digest, l, auth) } @@ -279,7 +300,7 @@ func signManifest(img, digest string, length int, auth dockertypes.AuthConfig) e } // report output - fmt.Printf("New signed multi-arch image: %s:%s\n", repo, tag) + fmt.Printf("Signed manifest index: %s:%s\n", repo, tag) return nil } From 6af59c6079f350050225ea07632e79f81f44ab8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20Wo=C5=BAniak?= Date: Fri, 24 Jul 2020 22:31:43 +0200 Subject: [PATCH 04/20] Make `pkg build` build the image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Karol Woźniak Signed-off-by: Birol Bilgin --- src/cmd/linuxkit/pkg_build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/linuxkit/pkg_build.go b/src/cmd/linuxkit/pkg_build.go index d1d9b54458..8a7f551022 100644 --- a/src/cmd/linuxkit/pkg_build.go +++ b/src/cmd/linuxkit/pkg_build.go @@ -29,7 +29,7 @@ func pkgBuild(args []string) { fmt.Printf("Building %q\n", p.Tag()) - var opts []pkglib.BuildOpt + opts := []pkglib.BuildOpt{pkglib.WithBuildImage()} if *force { opts = append(opts, pkglib.WithBuildForce()) } From 7c48d71fd5aa5a96d928f83f47e8d8c6862687b4 Mon Sep 17 00:00:00 2001 From: Rolf Neugebauer Date: Sun, 26 Jul 2020 11:29:19 +0100 Subject: [PATCH 05/20] Bump version to v0.8+ Signed-off-by: Rolf Neugebauer Signed-off-by: Birol Bilgin --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e9e5701628..9657630f3f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION="v0.8" +VERSION="v0.8+" GIT_COMMIT=$(shell git rev-list -1 HEAD) GO_COMPILE=linuxkit/go-compile:b1446b2ba407225011f97ae1dba0f512ae7f9b84 From 5abf9defb8e37f789fa2f9edaf2d2ad529367a7f Mon Sep 17 00:00:00 2001 From: Rolf Neugebauer Date: Sun, 26 Jul 2020 11:30:03 +0100 Subject: [PATCH 06/20] Update Changelog to what was posted on release page Signed-off-by: Rolf Neugebauer Signed-off-by: Birol Bilgin --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3f8480ae8..ea857b0e1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - Improved RPI3 build ### Removed +- Containerized `qemu` +- Windows binary from release ## [v0.7] - 2019-04-17 ### Added From b93d725cf0d688e0ce14d53cc2bde750d4eeaa2c Mon Sep 17 00:00:00 2001 From: Alex Szakaly Date: Fri, 11 Sep 2020 08:41:26 +0200 Subject: [PATCH 07/20] contrib: extend list of tolerations for open-vm-tools Keep previous toleration to being backward compatible Fixes #3549 Signed-off-by: Alex Szakaly Signed-off-by: Birol Bilgin --- contrib/open-vm-tools/open-vm-tools-ds.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/open-vm-tools/open-vm-tools-ds.yaml b/contrib/open-vm-tools/open-vm-tools-ds.yaml index 20b993a52a..de6b40518b 100644 --- a/contrib/open-vm-tools/open-vm-tools-ds.yaml +++ b/contrib/open-vm-tools/open-vm-tools-ds.yaml @@ -22,6 +22,9 @@ spec: value: "true" effect: NoSchedule - key: node-role.kubernetes.io/master + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule containers: - image: linuxkit/open-vm-tools:v0.8 name: open-vm-tools From 45f8e1ecb3bb2eaff9931e29b685c872ca32893b Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Thu, 20 Aug 2020 10:51:59 +0300 Subject: [PATCH 08/20] bump alpine version, add openssh-client, wireguard apk, containerd 1.4.1 Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- tools/alpine/Dockerfile | 23 +- tools/alpine/packages | 4 +- tools/alpine/versions.aarch64 | 541 +++++++++++++++++---------------- tools/alpine/versions.s390x | 526 ++++++++++++++++---------------- tools/alpine/versions.x86_64 | 548 +++++++++++++++++----------------- 5 files changed, 808 insertions(+), 834 deletions(-) diff --git a/tools/alpine/Dockerfile b/tools/alpine/Dockerfile index 321b7d6c7b..419770e1e6 100644 --- a/tools/alpine/Dockerfile +++ b/tools/alpine/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.11 AS mirror +FROM alpine:3.12 AS mirror # update base image RUN apk update && apk upgrade -a @@ -12,23 +12,8 @@ RUN cat /tmp/packages.$(uname -m) >> /tmp/packages && \ mkdir -p /mirror/$(apk --print-arch) && \ apk fetch --recursive -o /mirror/$(apk --print-arch) $(apk info; cat /tmp/packages) -# It's tricky to mix edge/testing packages which sometimes leads to dependency conflicts. -# wireguard-tools currently is only in edge, so here we build our own package using the -# APKBUILD file from edge. -RUN apk add alpine-sdk libmnl-dev curl && \ - adduser -D builder && \ - addgroup builder abuild && \ - mkdir -p /wireguard && \ - chmod 0777 /wireguard && \ - cd /wireguard && \ - curl -fsSLo APKBUILD https://git.alpinelinux.org/cgit/aports/plain/community/wireguard-tools/APKBUILD && \ - su -c "abuild-keygen -a -n && abuild -r" builder && \ - cp /home/builder/packages/$(apk --print-arch)/wireguard-tools-[0-9]*.apk /mirror/$(apk --print-arch) && \ - cp /home/builder/packages/$(apk --print-arch)/wireguard-tools-wg-[0-9]*.apk /mirror/$(apk --print-arch) && \ - cp /home/builder/packages/$(apk --print-arch)/wireguard-tools-wg-quick-[0-9]*.apk /mirror/$(apk --print-arch) - -# install abuild for signing -RUN apk add --no-cache abuild +# install abuild and sudo for signing +RUN apk add --no-cache abuild sudo # install a new key into /etc/apk/keys RUN abuild-keygen -a -i -n @@ -55,7 +40,7 @@ RUN go get -u github.com/LK4D4/vndr # Update `FROM` in `pkg/containerd/Dockerfile`, `pkg/init/Dockerfile` and # `test/pkg/containerd/Dockerfile` when changing this. ENV CONTAINERD_REPO=https://github.com/containerd/containerd.git -ENV CONTAINERD_COMMIT=v1.3.4 +ENV CONTAINERD_COMMIT=v1.4.1 RUN mkdir -p $GOPATH/src/github.com/containerd && \ cd $GOPATH/src/github.com/containerd && \ git clone https://github.com/containerd/containerd.git && \ diff --git a/tools/alpine/packages b/tools/alpine/packages index 0fe51189b1..e5b766f046 100644 --- a/tools/alpine/packages +++ b/tools/alpine/packages @@ -87,12 +87,13 @@ open-iscsi openntpd openrc openresolv +openssh-client openssh-server openssl openssl-dev patch pigz -python +python2 python3 qemu-aarch64 qemu-arm @@ -118,6 +119,7 @@ tzdata util-linux util-linux-dev vim +wireguard-tools wireless-tools wpa_supplicant xfsprogs diff --git a/tools/alpine/versions.aarch64 b/tools/alpine/versions.aarch64 index 7d2d11e4ac..df57a4b95e 100644 --- a/tools/alpine/versions.aarch64 +++ b/tools/alpine/versions.aarch64 @@ -1,372 +1,369 @@ -# linuxkit/alpine:e6635fd5f68e716e7c90ebab56543d291bef24eb-arm64 +# linuxkit/alpine:8c590aca93e31c975d93e08bc66ebffc1157baa3-arm64 # automatically generated list of installed packages -abuild-3.5.0-r0 -alpine-baselayout-3.2.0-r3 -alpine-keys-2.1-r2 -alsa-lib-1.2.1.2-r0 -apk-tools-2.10.5-r0 +abuild-3.6.0-r0 +alpine-baselayout-3.2.0-r7 +alpine-keys-2.2-r0 +alsa-lib-1.2.2-r0 +apk-tools-2.10.5-r1 argon2-libs-20190702-r1 -argp-standalone-1.3-r3 +argp-standalone-1.3-r4 attr-2.4.48-r0 attr-dev-2.4.48-r0 audit-2.8.5-r0 audit-libs-2.8.5-r0 audit-openrc-2.8.5-r0 autoconf-2.69-r2 -automake-1.16.1-r0 -avahi-libs-0.7-r4 -bash-5.0.11-r1 +automake-1.16.2-r0 +bash-5.0.17-r0 bc-1.07.1-r1 -binutils-2.33.1-r0 -binutils-dev-2.33.1-r0 -binutils-gold-2.33.1-r0 -bison-3.4.2-r0 -blkid-2.34-r1 +binutils-2.34-r1 +binutils-dev-2.34-r1 +binutils-gold-2.34-r1 +bison-3.6.2-r0 +blkid-2.35.2-r0 bridge-utils-1.6-r0 -bsd-compat-headers-0.7.2-r0 -btrfs-progs-5.4-r0 -btrfs-progs-dev-5.4-r0 -btrfs-progs-libs-5.4-r0 -build-base-0.5-r1 -busybox-1.31.1-r9 +brotli-libs-1.0.9-r1 +bsd-compat-headers-0.7.2-r3 +btrfs-progs-5.6.1-r0 +btrfs-progs-dev-5.6.1-r0 +btrfs-progs-libs-5.6.1-r0 +build-base-0.5-r2 +busybox-1.31.1-r19 busybox-initscripts-3.2-r2 bzip2-1.0.8-r1 -ca-certificates-20191127-r1 -ca-certificates-cacert-20191127-r1 +ca-certificates-20191127-r4 +ca-certificates-bundle-20191127-r4 cairo-1.16.0-r2 -cdparanoia-libs-10.2-r7 +cdparanoia-libs-10.2-r8 cdrkit-1.1.11-r2 -cifs-utils-6.9-r1 -clang-9.0.0-r1 -clang-dev-9.0.0-r1 -clang-libs-9.0.0-r1 -clang-static-9.0.0-r1 -cmake-3.15.5-r0 -cmake-bash-completion-3.15.5-r0 -coreutils-8.31-r0 -cryptsetup-2.2.2-r0 -cryptsetup-libs-2.2.2-r0 -cryptsetup-openrc-2.2.2-r0 -cups-libs-2.2.12-r1 -curl-7.67.0-r0 +cfdisk-2.35.2-r0 +cifs-utils-6.10-r1 +clang-10.0.0-r2 +clang-dev-10.0.0-r2 +clang-extra-tools-10.0.0-r2 +clang-libs-10.0.0-r2 +clang-static-10.0.0-r2 +cmake-3.17.2-r0 +coreutils-8.32-r0 +cryptsetup-2.3.2-r1 +cryptsetup-libs-2.3.2-r1 +cryptsetup-openrc-2.3.2-r1 +curl-7.69.1-r1 db-5.3.28-r1 -dbus-libs-1.12.16-r2 -device-mapper-2.02.186-r0 -device-mapper-event-libs-2.02.186-r0 -device-mapper-libs-2.02.186-r0 -device-mapper-udev-2.02.186-r0 -dhcpcd-8.1.2-r0 -dhcpcd-openrc-8.1.2-r0 +dbus-libs-1.12.18-r0 +device-mapper-2.02.186-r1 +device-mapper-event-libs-2.02.186-r1 +device-mapper-libs-2.02.186-r1 +device-mapper-udev-2.02.186-r1 +dhcpcd-8.1.6-r0 +dhcpcd-openrc-8.1.6-r0 diffutils-3.7-r0 dosfstools-4.1-r1 -dtc-1.5.1-r0 -e2fsprogs-1.45.5-r0 -e2fsprogs-dev-1.45.5-r0 -e2fsprogs-extra-1.45.5-r0 -e2fsprogs-libs-1.45.5-r0 -elfutils-dev-0.168-r2 -elfutils-libelf-0.168-r2 -ethtool-5.3-r0 -eudev-3.2.9-r1 -eudev-libs-3.2.9-r1 -eudev-openrc-3.2.9-r1 +dtc-1.6.0-r0 +e2fsprogs-1.45.6-r0 +e2fsprogs-dev-1.45.6-r0 +e2fsprogs-extra-1.45.6-r0 +e2fsprogs-libs-1.45.6-r0 +elfutils-dev-0.179-r0 +ethtool-5.6-r0 +eudev-3.2.9-r3 +eudev-libs-3.2.9-r3 +eudev-openrc-3.2.9-r3 expat-2.2.9-r1 expect-5.45.4-r0 fakeroot-1.24-r0 -file-5.37-r1 -findmnt-2.34-r1 +file-5.38-r0 +findmnt-2.35.2-r0 findutils-4.7.0-r0 flex-2.6.4-r2 flex-dev-2.6.4-r2 flex-libs-2.6.4-r2 fontconfig-2.13.1-r2 fortify-headers-1.1-r0 -freetype-2.10.1-r0 -fribidi-1.0.8-r0 +freetype-2.10.2-r0 +fribidi-1.0.9-r0 fts-1.2.7-r1 fts-dev-1.2.7-r1 -g++-9.2.0-r4 -gc-8.0.4-r0 -gcc-9.2.0-r4 +g++-9.3.0-r2 +gc-8.0.4-r1 +gcc-9.3.0-r2 gdbm-1.13-r1 -gettext-0.20.1-r2 -gettext-asprintf-0.20.1-r2 -gettext-dev-0.20.1-r2 -gettext-libs-0.20.1-r2 -git-2.24.3-r0 -git-perl-2.24.3-r0 -glib-2.62.6-r0 -gmp-6.1.2-r1 -gmp-dev-6.1.2-r1 -gnupg-2.2.19-r0 -gnutls-3.6.10-r1 -go-1.13.4-r1 -graphite2-1.3.13-r1 -grep-3.3-r0 -gst-plugins-base-1.16.2-r0 -gstreamer-1.16.2-r0 -guile-2.0.14-r0 -guile-libs-2.0.14-r0 -harfbuzz-2.6.4-r0 -hvtools-4.11.9-r0 +gettext-0.20.2-r0 +gettext-asprintf-0.20.2-r0 +gettext-dev-0.20.2-r0 +gettext-libs-0.20.2-r0 +git-2.26.2-r0 +git-perl-2.26.2-r0 +glib-2.64.6-r0 +gmp-6.2.0-r0 +gmp-dev-6.2.0-r0 +gnupg-2.2.23-r0 +gnutls-3.6.15-r0 +go-1.13.14-r0 +graphite2-1.3.14-r0 +grep-3.4-r0 +gst-plugins-base-1.16.2-r3 +gstreamer-1.16.2-r2 +guile-2.0.14-r2 +guile-libs-2.0.14-r2 +harfbuzz-2.6.6-r0 +hexdump-2.35.2-r0 +hvtools-4.11.9-r1 installkernel-3.5-r0 -iperf3-3.7-r0 -iperf3-openrc-3.7-r0 -iproute2-5.4.0-r1 -iptables-1.8.3-r2 -iptables-openrc-1.8.3-r2 -ipvsadm-1.30-r0 +iperf3-3.7-r2 +iperf3-openrc-3.7-r2 +iproute2-5.6.0-r0 +iptables-1.8.4-r2 +iptables-openrc-1.8.4-r2 +ipvsadm-1.31-r0 isl-0.18-r0 -jansson-2.12-r0 -jq-1.6-r0 -json-c-0.13.1-r0 -keyutils-1.6.1-r0 -keyutils-libs-1.6.1-r0 -kmod-26-r0 -kmod-openrc-26-r0 -krb5-conf-1.0-r1 -krb5-dev-1.17.1-r0 -krb5-libs-1.17.1-r0 -krb5-server-ldap-1.17.1-r0 -ldb-2.0.8-r0 +jq-1.6-r1 +json-c-0.14-r1 +keyutils-1.6.1-r1 +keyutils-libs-1.6.1-r1 +kmod-27-r0 +kmod-libs-27-r0 +kmod-openrc-27-r0 +krb5-conf-1.0-r2 +krb5-dev-1.18.2-r0 +krb5-libs-1.18.2-r0 +krb5-server-ldap-1.18.2-r0 libacl-2.2.53-r0 libaio-0.3.112-r1 -libarchive-3.4.2-r0 -libarchive-tools-3.4.2-r0 +libarchive-3.4.3-r1 +libarchive-tools-3.4.3-r1 libassuan-2.5.3-r0 -libatomic-9.2.0-r4 +libatomic-9.3.0-r2 libattr-2.4.48-r0 -libblkid-2.34-r1 +libblkid-2.35.2-r0 libbsd-0.10.0-r0 libburn-1.5.2-r0 libbz2-1.0.8-r1 -libc-dev-0.7.2-r0 -libc-utils-0.7.2-r0 -libc6-compat-1.1.24-r2 +libc-dev-0.7.2-r3 +libc-utils-0.7.2-r3 +libc6-compat-1.1.24-r9 libcap-2.27-r0 -libcap-ng-0.7.10-r0 -libcap-ng-dev-0.7.10-r0 -libcom_err-1.45.5-r0 +libcap-ng-0.7.10-r1 +libcap-ng-dev-0.7.10-r1 +libcom_err-1.45.6-r0 libcrypto1.1-1.1.1g-r0 -libcurl-7.67.0-r0 -libdrm-2.4.100-r0 -libedit-20191211.3.1-r0 -libedit-dev-20191211.3.1-r0 +libcurl-7.69.1-r1 +libdrm-2.4.102-r0 +libedit-20191231.3.1-r0 +libedit-dev-20191231.3.1-r0 +libelf-0.179-r0 libepoxy-1.5.4-r0 -libevent-2.1.11-r0 -libexecinfo-1.1-r1 -libexecinfo-dev-1.1-r1 -libfdisk-2.34-r1 -libfdt-1.5.1-r0 -libffi-3.2.1-r6 -libgcc-9.2.0-r4 +libevent-2.1.11-r1 +libfdisk-2.35.2-r0 +libfdt-1.6.0-r0 +libffi-3.3-r2 +libgcc-9.3.0-r2 libgcrypt-1.8.5-r0 -libgmpxx-6.1.2-r1 -libgomp-9.2.0-r4 -libgpg-error-1.36-r2 -libintl-0.20.1-r2 +libgmpxx-6.2.0-r0 +libgomp-9.3.0-r2 +libgpg-error-1.37-r0 +libgphobos-9.3.0-r2 +libintl-0.20.2-r0 libisoburn-1.5.2-r0 libisofs-1.5.2-r0 -libjpeg-turbo-2.0.4-r0 -libksba-1.3.5-r0 -libldap-2.4.48-r1 +libjpeg-turbo-2.0.5-r0 +libksba-1.4.0-r0 +libldap-2.4.50-r0 libltdl-2.4.6-r7 -libmagic-5.37-r1 +libmagic-5.38-r0 libmnl-1.0.4-r0 -libmount-2.34-r1 -libnfsidmap-2.4.1-r2 -libnftnl-libs-1.1.5-r0 +libmount-2.35.2-r0 +libnfsidmap-2.4.3-r1 +libnftnl-libs-1.1.6-r0 libnl3-3.5.0-r0 libogg-1.3.4-r0 -libpcap-1.9.1-r0 +libpcap-1.9.1-r2 libpng-1.6.37-r1 -libressl-dev-3.0.2-r0 -libressl3.0-libcrypto-3.0.2-r0 -libressl3.0-libssl-3.0.2-r0 -libressl3.0-libtls-3.0.2-r0 -libsasl-2.1.27-r5 -libseccomp-2.4.2-r2 -libseccomp-dev-2.4.2-r2 -libsecret-0.19.1-r0 -libsmartcols-2.34-r1 +libressl-dev-3.1.2-r0 +libressl3.1-libcrypto-3.1.2-r0 +libressl3.1-libssl-3.1.2-r0 +libressl3.1-libtls-3.1.2-r0 +libsasl-2.1.27-r6 +libseccomp-2.4.3-r0 +libseccomp-dev-2.4.3-r0 +libsecret-0.20.3-r0 +libsmartcols-2.35.2-r0 libssl1.1-1.1.1g-r0 -libstdc++-9.2.0-r4 -libtasn1-4.15.0-r0 +libstdc++-9.3.0-r2 +libtasn1-4.16.0-r1 libtheora-1.1.1-r14 -libtirpc-1.1.4-r0 -libtirpc-dev-1.1.4-r0 -libtls-standalone-2.9.1-r0 +libtirpc-1.2.6-r0 +libtirpc-conf-1.2.6-r0 +libtirpc-dev-1.2.6-r0 +libtirpc-nokrb-1.2.6-r0 +libtls-standalone-2.9.1-r1 libtool-2.4.6-r7 +libucontext-0.11-r0 +libucontext-dev-0.11-r0 libunistring-0.9.10-r0 -libunwind-1.2.1-r3 -libunwind-dev-1.2.1-r3 +libunwind-1.4.0-r0 +libunwind-dev-1.4.0-r0 libusb-1.0.23-r0 -libuuid-2.34-r1 -libuv-1.34.0-r0 +libuuid-2.35.2-r0 +libuv-1.38.1-r0 libverto-0.3.1-r1 libvorbis-1.3.6-r2 -libwbclient-4.11.5-r0 -libx11-1.6.9-r0 +libwbclient-4.12.7-r0 +libx11-1.6.12-r0 libxau-1.0.9-r0 -libxcb-1.13.1-r0 +libxcb-1.14-r1 libxdamage-1.1.5-r0 libxdmcp-1.1.3-r0 libxext-1.3.4-r0 libxfixes-5.0.3-r2 libxft-2.3.3-r0 -libxkbcommon-0.9.1-r0 -libxml2-2.9.10-r2 +libxkbcommon-0.10.0-r1 +libxml2-2.9.10-r5 libxrender-0.9.10-r3 libxshmfence-1.3-r0 libxv-1.0.11-r2 libxxf86vm-1.1.4-r2 -linux-headers-4.19.36-r0 -linux-pam-1.3.1-r1 -llvm9-9.0.0-r1 -llvm9-dev-9.0.0-r1 -llvm9-libs-9.0.0-r1 -llvm9-static-9.0.0-r1 -lmdb-0.9.24-r1 -lsscsi-0.30-r0 -lua5.3-libs-5.3.5-r2 -luajit-2.1.0_beta3-r6 -luajit-dev-2.1.0_beta3-r6 -lvm2-libs-2.02.186-r0 +linux-headers-5.4.5-r1 +llvm10-10.0.0-r2 +llvm10-dev-10.0.0-r2 +llvm10-libs-10.0.0-r2 +llvm10-static-10.0.0-r2 +lsblk-2.35.2-r0 +lsscsi-0.31-r0 +lua5.3-libs-5.3.5-r6 +luajit-5.1.20190925-r0 +luajit-dev-5.1.20190925-r0 +lvm2-libs-2.02.186-r1 lz4-libs-1.9.2-r0 lzip-1.21-r0 lzo-2.10-r2 m4-1.4.18-r1 -make-4.2.1-r2 -mesa-19.2.7-r0 -mesa-egl-19.2.7-r0 -mesa-gbm-19.2.7-r0 -mesa-gl-19.2.7-r0 -mesa-glapi-19.2.7-r0 +make-4.3-r0 +mcookie-2.35.2-r0 +mesa-20.0.7-r0 +mesa-egl-20.0.7-r0 +mesa-gbm-20.0.7-r0 +mesa-gl-20.0.7-r0 +mesa-glapi-20.0.7-r0 mpc1-1.1.0-r1 mpc1-dev-1.1.0-r1 -mpfr-dev-4.0.2-r1 -mpfr4-4.0.2-r1 -mtools-4.0.23-r0 -multipath-tools-0.8.3-r4 -multipath-tools-openrc-0.8.3-r4 -musl-1.1.24-r2 -musl-dev-1.1.24-r2 -musl-utils-1.1.24-r2 -ncurses-dev-6.1_p20200118-r3 -ncurses-libs-6.1_p20200118-r3 -ncurses-terminfo-base-6.1_p20200118-r3 -nettle-3.5.1-r0 -nfs-utils-2.4.1-r2 -nfs-utils-openrc-2.4.1-r2 -nghttp2-libs-1.40.0-r0 +mpfr-dev-4.0.2-r4 +mpfr4-4.0.2-r4 +mtools-4.0.24-r0 +multipath-tools-0.8.4-r1 +multipath-tools-openrc-0.8.4-r1 +musl-1.1.24-r9 +musl-dev-1.1.24-r9 +musl-utils-1.1.24-r9 +ncurses-dev-6.2_p20200523-r0 +ncurses-libs-6.2_p20200523-r0 +ncurses-terminfo-base-6.2_p20200523-r0 +nettle-3.5.1-r1 +nfs-utils-2.4.3-r1 +nfs-utils-openrc-2.4.3-r1 +nghttp2-libs-1.41.0-r0 npth-1.6-r0 -oniguruma-6.9.4-r0 +oniguruma-6.9.5-r1 open-iscsi-2.1.0-r2 open-iscsi-libs-2.1.0-r2 open-iscsi-openrc-2.1.0-r2 -open-isns-lib-0.99-r0 +open-isns-lib-0.100-r0 openntpd-6.2_p3-r3 -openrc-0.42.1-r2 -openresolv-3.9.2-r0 -openssh-keygen-8.1_p1-r0 -openssh-server-8.1_p1-r0 -openssh-server-common-8.1_p1-r0 +openrc-0.42.1-r11 +openresolv-3.10.0-r0 +openssh-client-8.3_p1-r0 +openssh-keygen-8.3_p1-r0 +openssh-server-8.3_p1-r0 +openssh-server-common-8.3_p1-r0 openssl-1.1.1g-r0 openssl-dev-1.1.1g-r0 opus-1.3.1-r0 -orc-0.4.31-r0 -p11-kit-0.23.18.1-r0 -pango-1.44.7-r0 +orc-0.4.31-r2 +p11-kit-0.23.20-r5 +pango-1.44.7-r2 patch-2.7.6-r6 -pax-utils-1.2.4-r0 -pcre-8.43-r0 -pcre2-10.34-r1 -pcsc-lite-libs-1.8.25-r2 -perl-5.30.1-r0 -perl-error-0.17028-r0 -perl-git-2.24.3-r0 -pigz-2.4-r0 +pcre-8.44-r0 +pcre2-10.35-r0 +pcsc-lite-libs-1.8.26-r0 +perl-5.30.3-r0 +perl-error-0.17029-r0 +perl-git-2.26.2-r0 +pigz-2.4-r1 pinentry-1.1.0-r2 -pixman-0.38.4-r0 -pkgconf-1.6.3-r0 +pixman-0.40.0-r2 +pkgconf-1.7.2-r0 popt-1.16-r7 -python2-2.7.16-r3 -python3-3.8.2-r0 -qemu-4.2.0-r0 -qemu-aarch64-4.2.0-r0 -qemu-arm-4.2.0-r0 -qemu-guest-agent-4.2.0-r0 -qemu-img-4.2.0-r0 -qemu-ppc64le-4.2.0-r0 -qemu-system-aarch64-4.2.0-r0 -qemu-system-arm-4.2.0-r0 -qemu-system-x86_64-4.2.0-r0 -readline-8.0.1-r0 -rhash-libs-1.3.9-r0 +python2-2.7.18-r0 +python3-3.8.5-r0 +qemu-5.0.0-r2 +qemu-aarch64-5.0.0-r2 +qemu-arm-5.0.0-r2 +qemu-guest-agent-5.0.0-r2 +qemu-img-5.0.0-r2 +qemu-ppc64le-5.0.0-r2 +qemu-system-aarch64-5.0.0-r2 +qemu-system-arm-5.0.0-r2 +qemu-system-x86_64-5.0.0-r2 +readline-8.0.4-r0 +rhash-libs-1.3.9-r1 rpcbind-1.2.5-r0 rpcbind-openrc-1.2.5-r0 -rsync-3.1.3-r2 -rsync-openrc-3.1.3-r2 -samba-client-libs-4.11.5-r0 -samba-common-libs-4.11.5-r0 -samba-common-server-libs-4.11.5-r0 -samba-heimdal-libs-4.11.5-r0 -samba-libs-4.11.5-r0 -samba-server-libs-4.11.5-r0 -scanelf-1.2.4-r0 -sed-4.7-r0 -sfdisk-2.34-r1 -sg3_utils-1.44-r0 -sgdisk-1.0.4-r0 +rsync-3.1.3-r3 +rsync-openrc-3.1.3-r3 +samba-util-libs-4.12.7-r0 +scanelf-1.2.6-r0 +sed-4.8-r0 +setpriv-2.35.2-r0 +sfdisk-2.35.2-r0 +sg3_utils-1.45-r0 +sgdisk-1.0.5-r0 slang-2.3.2-r0 slang-dev-2.3.2-r0 -snappy-1.1.7-r1 +snappy-1.1.8-r2 sntpc-0.9-r6 -socat-1.7.3.3-r1 -spice-server-0.14.2-r1 -sqlite-libs-3.30.1-r1 +socat-1.7.3.4-r0 +spice-server-0.14.3-r0 +sqlite-libs-3.32.1-r0 squashfs-tools-4.4-r0 -ssl_client-1.31.1-r9 -strace-5.3-r1 -sudo-1.8.31-r0 -swig-3.0.12-r4 +ssl_client-1.31.1-r19 +strace-5.6-r0 +swig-4.0.1-r0 talloc-2.3.1-r0 tar-1.32-r1 -tcl-8.6.9-r0 -tcpdump-4.9.3-r0 -tdb-libs-1.4.3-r0 +tcl-8.6.10-r0 +tcpdump-4.9.3-r1 tevent-0.10.2-r0 -tini-0.18.0-r0 -tzdata-2019c-r0 -udev-init-scripts-33-r0 -udev-init-scripts-openrc-33-r0 -usbredir-0.8.0-r0 -userspace-rcu-0.11.1-r0 -util-linux-2.34-r1 -util-linux-dev-2.34-r1 +tini-0.19.0-r0 +tzdata-2020a-r0 +udev-init-scripts-33-r1 +udev-init-scripts-openrc-33-r1 +usbredir-0.8.0-r1 +userspace-rcu-0.12.1-r0 +util-linux-2.35.2-r0 +util-linux-dev-2.35.2-r0 vde2-libs-2.3.2-r12 -vim-8.2.0-r0 -virglrenderer-0.8.1-r0 -wayland-libs-client-1.17.0-r0 -wayland-libs-egl-1.17.0-r0 -wayland-libs-server-1.17.0-r0 -wireguard-tools-1.0.20200319-r0 -wireguard-tools-wg-1.0.20200319-r0 -wireguard-tools-wg-quick-1.0.20200319-r0 +vim-8.2.0735-r0 +virglrenderer-0.8.2-r1 +wayland-libs-client-1.18.0-r4 +wayland-libs-egl-1.18.0-r4 +wayland-libs-server-1.18.0-r4 +wireguard-tools-1.0.20200510-r0 +wireguard-tools-wg-1.0.20200510-r0 +wireguard-tools-wg-quick-1.0.20200510-r0 wireless-tools-30_pre9-r1 wpa_supplicant-2.9-r5 wpa_supplicant-openrc-2.9-r5 -xfsprogs-5.3.0-r0 -xfsprogs-extra-5.3.0-r0 +xfsprogs-5.6.0-r1 +xfsprogs-extra-5.6.0-r1 xorriso-1.5.2-r0 -xxd-8.2.0-r0 -xz-5.2.4-r0 -xz-dev-5.2.4-r0 -xz-libs-5.2.4-r0 -zfs-0.8.3-r1 -zfs-libs-0.8.3-r1 -zfs-openrc-0.8.3-r1 +xxd-8.2.0735-r0 +xz-5.2.5-r0 +xz-dev-5.2.5-r0 +xz-libs-5.2.5-r0 +zfs-0.8.4-r0 +zfs-libs-0.8.4-r0 +zfs-openrc-0.8.4-r0 zlib-1.2.11-r3 zlib-dev-1.2.11-r3 zlib-static-1.2.11-r3 -zstd-libs-1.4.4-r1 +zstd-libs-1.4.5-r0 diff --git a/tools/alpine/versions.s390x b/tools/alpine/versions.s390x index 6ba973921f..7e57dec7ea 100644 --- a/tools/alpine/versions.s390x +++ b/tools/alpine/versions.s390x @@ -1,364 +1,362 @@ -# linuxkit/alpine:890d3338f9cdf4419fb8aeb75863408329c9d1ce-s390x +# linuxkit/alpine:5136b5b3650e0bed7cb19ce1efc2c2c66afe90ab-s390x # automatically generated list of installed packages -abuild-3.5.0-r0 -alpine-baselayout-3.2.0-r3 -alpine-keys-2.1-r2 -alsa-lib-1.2.1.2-r0 -apk-tools-2.10.5-r0 +abuild-3.6.0-r0 +alpine-baselayout-3.2.0-r7 +alpine-keys-2.2-r0 +alsa-lib-1.2.2-r0 +apk-tools-2.10.5-r1 argon2-libs-20190702-r1 -argp-standalone-1.3-r3 +argp-standalone-1.3-r4 attr-2.4.48-r0 attr-dev-2.4.48-r0 audit-2.8.5-r0 audit-libs-2.8.5-r0 audit-openrc-2.8.5-r0 autoconf-2.69-r2 -automake-1.16.1-r0 -avahi-libs-0.7-r4 -bash-5.0.11-r1 +automake-1.16.2-r0 +bash-5.0.17-r0 bc-1.07.1-r1 -binutils-2.33.1-r0 -binutils-dev-2.33.1-r0 -bison-3.4.2-r0 -blkid-2.34-r1 +binutils-2.34-r1 +binutils-dev-2.34-r1 +bison-3.6.2-r0 +blkid-2.35.2-r0 bridge-utils-1.6-r0 -bsd-compat-headers-0.7.2-r0 -btrfs-progs-5.4-r0 -btrfs-progs-dev-5.4-r0 -btrfs-progs-libs-5.4-r0 -build-base-0.5-r1 -busybox-1.31.1-r9 +brotli-libs-1.0.9-r1 +bsd-compat-headers-0.7.2-r3 +btrfs-progs-5.6.1-r0 +btrfs-progs-dev-5.6.1-r0 +btrfs-progs-libs-5.6.1-r0 +build-base-0.5-r2 +busybox-1.31.1-r19 busybox-initscripts-3.2-r2 bzip2-1.0.8-r1 -ca-certificates-20191127-r1 -ca-certificates-cacert-20191127-r1 +ca-certificates-20191127-r4 +ca-certificates-bundle-20191127-r4 cairo-1.16.0-r2 -cdparanoia-libs-10.2-r7 +cdparanoia-libs-10.2-r8 cdrkit-1.1.11-r2 -cifs-utils-6.9-r1 -clang-9.0.0-r1 -clang-dev-9.0.0-r1 -clang-libs-9.0.0-r1 -clang-static-9.0.0-r1 -cmake-3.15.5-r0 -cmake-bash-completion-3.15.5-r0 -coreutils-8.31-r0 -cryptsetup-2.2.2-r0 -cryptsetup-libs-2.2.2-r0 -cryptsetup-openrc-2.2.2-r0 -cups-libs-2.2.12-r1 -curl-7.67.0-r0 +cfdisk-2.35.2-r0 +cifs-utils-6.10-r1 +clang-10.0.0-r2 +clang-dev-10.0.0-r2 +clang-extra-tools-10.0.0-r2 +clang-libs-10.0.0-r2 +clang-static-10.0.0-r2 +cmake-3.17.2-r0 +coreutils-8.32-r0 +cryptsetup-2.3.2-r1 +cryptsetup-libs-2.3.2-r1 +cryptsetup-openrc-2.3.2-r1 +curl-7.69.1-r1 db-5.3.28-r1 -dbus-libs-1.12.16-r2 -device-mapper-2.02.186-r0 -device-mapper-event-libs-2.02.186-r0 -device-mapper-libs-2.02.186-r0 -device-mapper-udev-2.02.186-r0 -dhcpcd-8.1.2-r0 -dhcpcd-openrc-8.1.2-r0 +dbus-libs-1.12.18-r0 +device-mapper-2.02.186-r1 +device-mapper-event-libs-2.02.186-r1 +device-mapper-libs-2.02.186-r1 +device-mapper-udev-2.02.186-r1 +dhcpcd-8.1.6-r0 +dhcpcd-openrc-8.1.6-r0 diffutils-3.7-r0 dosfstools-4.1-r1 -dtc-1.5.1-r0 -e2fsprogs-1.45.5-r0 -e2fsprogs-dev-1.45.5-r0 -e2fsprogs-extra-1.45.5-r0 -e2fsprogs-libs-1.45.5-r0 -elfutils-dev-0.168-r2 -elfutils-libelf-0.168-r2 -ethtool-5.3-r0 -eudev-3.2.9-r1 -eudev-libs-3.2.9-r1 -eudev-openrc-3.2.9-r1 +dtc-1.6.0-r0 +e2fsprogs-1.45.6-r0 +e2fsprogs-dev-1.45.6-r0 +e2fsprogs-extra-1.45.6-r0 +e2fsprogs-libs-1.45.6-r0 +elfutils-dev-0.179-r0 +ethtool-5.6-r0 +eudev-3.2.9-r3 +eudev-libs-3.2.9-r3 +eudev-openrc-3.2.9-r3 expat-2.2.9-r1 expect-5.45.4-r0 fakeroot-1.24-r0 -file-5.37-r1 -findmnt-2.34-r1 +file-5.38-r0 +findmnt-2.35.2-r0 findutils-4.7.0-r0 flex-2.6.4-r2 flex-dev-2.6.4-r2 flex-libs-2.6.4-r2 fontconfig-2.13.1-r2 fortify-headers-1.1-r0 -freetype-2.10.1-r0 -fribidi-1.0.8-r0 +freetype-2.10.2-r0 +fribidi-1.0.9-r0 fts-1.2.7-r1 fts-dev-1.2.7-r1 -g++-9.2.0-r4 -gc-8.0.4-r0 -gcc-9.2.0-r4 +g++-9.3.0-r2 +gc-8.0.4-r1 +gcc-9.3.0-r2 gdbm-1.13-r1 -gettext-0.20.1-r2 -gettext-asprintf-0.20.1-r2 -gettext-dev-0.20.1-r2 -gettext-libs-0.20.1-r2 -git-2.24.3-r0 -git-perl-2.24.3-r0 -glib-2.62.6-r0 -gmp-6.1.2-r1 -gmp-dev-6.1.2-r1 -gnupg-2.2.19-r0 -gnutls-3.6.10-r1 -go-1.13.4-r1 -graphite2-1.3.13-r1 -grep-3.3-r0 -gst-plugins-base-1.16.2-r0 -gstreamer-1.16.2-r0 -guile-2.0.14-r0 -guile-libs-2.0.14-r0 -harfbuzz-2.6.4-r0 -hvtools-4.11.9-r0 +gettext-0.20.2-r0 +gettext-asprintf-0.20.2-r0 +gettext-dev-0.20.2-r0 +gettext-libs-0.20.2-r0 +git-2.26.2-r0 +git-perl-2.26.2-r0 +glib-2.64.6-r0 +gmp-6.2.0-r0 +gmp-dev-6.2.0-r0 +gnupg-2.2.23-r0 +gnutls-3.6.15-r0 +go-1.13.14-r0 +graphite2-1.3.14-r0 +grep-3.4-r0 +gst-plugins-base-1.16.2-r3 +gstreamer-1.16.2-r2 +guile-2.0.14-r2 +guile-libs-2.0.14-r2 +harfbuzz-2.6.6-r0 +hexdump-2.35.2-r0 +hvtools-4.11.9-r1 installkernel-3.5-r0 -iperf3-3.7-r0 -iperf3-openrc-3.7-r0 -iproute2-5.4.0-r1 -iptables-1.8.3-r2 -iptables-openrc-1.8.3-r2 -ipvsadm-1.30-r0 +iperf3-3.7-r2 +iperf3-openrc-3.7-r2 +iproute2-5.6.0-r0 +iptables-1.8.4-r2 +iptables-openrc-1.8.4-r2 +ipvsadm-1.31-r0 isl-0.18-r0 -jansson-2.12-r0 -jq-1.6-r0 -json-c-0.13.1-r0 -keyutils-1.6.1-r0 -keyutils-libs-1.6.1-r0 -kmod-26-r0 -kmod-openrc-26-r0 -krb5-conf-1.0-r1 -krb5-dev-1.17.1-r0 -krb5-libs-1.17.1-r0 -krb5-server-ldap-1.17.1-r0 -ldb-2.0.8-r0 +jq-1.6-r1 +json-c-0.14-r1 +keyutils-1.6.1-r1 +keyutils-libs-1.6.1-r1 +kmod-27-r0 +kmod-libs-27-r0 +kmod-openrc-27-r0 +krb5-conf-1.0-r2 +krb5-dev-1.18.2-r0 +krb5-libs-1.18.2-r0 +krb5-server-ldap-1.18.2-r0 libacl-2.2.53-r0 libaio-0.3.112-r1 -libarchive-3.4.2-r0 -libarchive-tools-3.4.2-r0 +libarchive-3.4.3-r1 +libarchive-tools-3.4.3-r1 libassuan-2.5.3-r0 -libatomic-9.2.0-r4 +libatomic-9.3.0-r2 libattr-2.4.48-r0 -libblkid-2.34-r1 +libblkid-2.35.2-r0 libbsd-0.10.0-r0 libburn-1.5.2-r0 libbz2-1.0.8-r1 -libc-dev-0.7.2-r0 -libc-utils-0.7.2-r0 -libc6-compat-1.1.24-r2 +libc-dev-0.7.2-r3 +libc-utils-0.7.2-r3 +libc6-compat-1.1.24-r9 libcap-2.27-r0 -libcap-ng-0.7.10-r0 -libcap-ng-dev-0.7.10-r0 -libcom_err-1.45.5-r0 +libcap-ng-0.7.10-r1 +libcap-ng-dev-0.7.10-r1 +libcom_err-1.45.6-r0 libcrypto1.1-1.1.1g-r0 -libcurl-7.67.0-r0 -libdrm-2.4.100-r0 -libedit-20191211.3.1-r0 -libedit-dev-20191211.3.1-r0 +libcurl-7.69.1-r1 +libdrm-2.4.102-r0 +libedit-20191231.3.1-r0 +libedit-dev-20191231.3.1-r0 +libelf-0.179-r0 libepoxy-1.5.4-r0 -libevent-2.1.11-r0 -libfdisk-2.34-r1 -libfdt-1.5.1-r0 -libffi-3.2.1-r6 -libgcc-9.2.0-r4 +libevent-2.1.11-r1 +libfdisk-2.35.2-r0 +libfdt-1.6.0-r0 +libffi-3.3-r2 +libgcc-9.3.0-r2 libgcrypt-1.8.5-r0 -libgmpxx-6.1.2-r1 -libgomp-9.2.0-r4 -libgpg-error-1.36-r2 -libintl-0.20.1-r2 +libgmpxx-6.2.0-r0 +libgomp-9.3.0-r2 +libgpg-error-1.37-r0 +libgphobos-9.3.0-r2 +libintl-0.20.2-r0 libisoburn-1.5.2-r0 libisofs-1.5.2-r0 -libjpeg-turbo-2.0.4-r0 -libksba-1.3.5-r0 -libldap-2.4.48-r1 +libjpeg-turbo-2.0.5-r0 +libksba-1.4.0-r0 +libldap-2.4.50-r0 libltdl-2.4.6-r7 -libmagic-5.37-r1 +libmagic-5.38-r0 libmnl-1.0.4-r0 -libmount-2.34-r1 -libnfsidmap-2.4.1-r2 -libnftnl-libs-1.1.5-r0 +libmount-2.35.2-r0 +libnfsidmap-2.4.3-r1 +libnftnl-libs-1.1.6-r0 libnl3-3.5.0-r0 libogg-1.3.4-r0 -libpcap-1.9.1-r0 +libpcap-1.9.1-r2 libpng-1.6.37-r1 -libressl-dev-3.0.2-r0 -libressl3.0-libcrypto-3.0.2-r0 -libressl3.0-libssl-3.0.2-r0 -libressl3.0-libtls-3.0.2-r0 -libsasl-2.1.27-r5 -libseccomp-2.4.2-r2 -libseccomp-dev-2.4.2-r2 -libsecret-0.19.1-r0 -libsmartcols-2.34-r1 +libressl-dev-3.1.2-r0 +libressl3.1-libcrypto-3.1.2-r0 +libressl3.1-libssl-3.1.2-r0 +libressl3.1-libtls-3.1.2-r0 +libsasl-2.1.27-r6 +libseccomp-2.4.3-r0 +libseccomp-dev-2.4.3-r0 +libsecret-0.20.3-r0 +libsmartcols-2.35.2-r0 libssl1.1-1.1.1g-r0 -libstdc++-9.2.0-r4 -libtasn1-4.15.0-r0 +libstdc++-9.3.0-r2 +libtasn1-4.16.0-r1 libtheora-1.1.1-r14 -libtirpc-1.1.4-r0 -libtirpc-dev-1.1.4-r0 -libtls-standalone-2.9.1-r0 +libtirpc-1.2.6-r0 +libtirpc-conf-1.2.6-r0 +libtirpc-dev-1.2.6-r0 +libtirpc-nokrb-1.2.6-r0 +libtls-standalone-2.9.1-r1 libtool-2.4.6-r7 +libucontext-0.11-r0 libunistring-0.9.10-r0 libusb-1.0.23-r0 -libuuid-2.34-r1 -libuv-1.34.0-r0 +libuuid-2.35.2-r0 +libuv-1.38.1-r0 libverto-0.3.1-r1 libvorbis-1.3.6-r2 -libwbclient-4.11.5-r0 -libx11-1.6.9-r0 +libwbclient-4.12.7-r0 +libx11-1.6.12-r0 libxau-1.0.9-r0 -libxcb-1.13.1-r0 +libxcb-1.14-r1 libxdamage-1.1.5-r0 libxdmcp-1.1.3-r0 libxext-1.3.4-r0 libxfixes-5.0.3-r2 libxft-2.3.3-r0 -libxkbcommon-0.9.1-r0 -libxml2-2.9.10-r2 +libxkbcommon-0.10.0-r1 +libxml2-2.9.10-r5 libxrender-0.9.10-r3 libxshmfence-1.3-r0 libxv-1.0.11-r2 libxxf86vm-1.1.4-r2 -linux-headers-4.19.36-r0 -linux-pam-1.3.1-r1 -llvm9-9.0.0-r1 -llvm9-dev-9.0.0-r1 -llvm9-libs-9.0.0-r1 -llvm9-static-9.0.0-r1 -lmdb-0.9.24-r1 -lsscsi-0.30-r0 -lua5.3-libs-5.3.5-r2 -lvm2-libs-2.02.186-r0 +linux-headers-5.4.5-r1 +llvm10-10.0.0-r2 +llvm10-dev-10.0.0-r2 +llvm10-libs-10.0.0-r2 +llvm10-static-10.0.0-r2 +lsblk-2.35.2-r0 +lsscsi-0.31-r0 +lua5.3-libs-5.3.5-r6 +lvm2-libs-2.02.186-r1 lz4-libs-1.9.2-r0 lzip-1.21-r0 lzo-2.10-r2 m4-1.4.18-r1 -make-4.2.1-r2 -mesa-19.2.7-r0 -mesa-egl-19.2.7-r0 -mesa-gbm-19.2.7-r0 -mesa-gl-19.2.7-r0 -mesa-glapi-19.2.7-r0 +make-4.3-r0 +mcookie-2.35.2-r0 +mesa-20.0.7-r0 +mesa-egl-20.0.7-r0 +mesa-gbm-20.0.7-r0 +mesa-gl-20.0.7-r0 +mesa-glapi-20.0.7-r0 mpc1-1.1.0-r1 mpc1-dev-1.1.0-r1 -mpfr-dev-4.0.2-r1 -mpfr4-4.0.2-r1 -mtools-4.0.23-r0 -multipath-tools-0.8.3-r4 -multipath-tools-openrc-0.8.3-r4 -musl-1.1.24-r2 -musl-dev-1.1.24-r2 -musl-utils-1.1.24-r2 -ncurses-dev-6.1_p20200118-r3 -ncurses-libs-6.1_p20200118-r3 -ncurses-terminfo-base-6.1_p20200118-r3 -nettle-3.5.1-r0 -nfs-utils-2.4.1-r2 -nfs-utils-openrc-2.4.1-r2 -nghttp2-libs-1.40.0-r0 +mpfr-dev-4.0.2-r4 +mpfr4-4.0.2-r4 +mtools-4.0.24-r0 +multipath-tools-0.8.4-r1 +multipath-tools-openrc-0.8.4-r1 +musl-1.1.24-r9 +musl-dev-1.1.24-r9 +musl-utils-1.1.24-r9 +ncurses-dev-6.2_p20200523-r0 +ncurses-libs-6.2_p20200523-r0 +ncurses-terminfo-base-6.2_p20200523-r0 +nettle-3.5.1-r1 +nfs-utils-2.4.3-r1 +nfs-utils-openrc-2.4.3-r1 +nghttp2-libs-1.41.0-r0 npth-1.6-r0 -oniguruma-6.9.4-r0 +oniguruma-6.9.5-r1 open-iscsi-2.1.0-r2 open-iscsi-libs-2.1.0-r2 open-iscsi-openrc-2.1.0-r2 -open-isns-lib-0.99-r0 +open-isns-lib-0.100-r0 openntpd-6.2_p3-r3 -openrc-0.42.1-r2 -openresolv-3.9.2-r0 -openssh-keygen-8.1_p1-r0 -openssh-server-8.1_p1-r0 -openssh-server-common-8.1_p1-r0 +openrc-0.42.1-r11 +openresolv-3.10.0-r0 +openssh-client-8.3_p1-r0 +openssh-keygen-8.3_p1-r0 +openssh-server-8.3_p1-r0 +openssh-server-common-8.3_p1-r0 openssl-1.1.1g-r0 openssl-dev-1.1.1g-r0 opus-1.3.1-r0 -orc-0.4.31-r0 -p11-kit-0.23.18.1-r0 -pango-1.44.7-r0 +orc-0.4.31-r2 +p11-kit-0.23.20-r5 +pango-1.44.7-r2 patch-2.7.6-r6 -pax-utils-1.2.4-r0 -pcre-8.43-r0 -pcre2-10.34-r1 -pcsc-lite-libs-1.8.25-r2 -perl-5.30.1-r0 -perl-error-0.17028-r0 -perl-git-2.24.3-r0 -pigz-2.4-r0 +pcre-8.44-r0 +pcre2-10.35-r0 +pcsc-lite-libs-1.8.26-r0 +perl-5.30.3-r0 +perl-error-0.17029-r0 +perl-git-2.26.2-r0 +pigz-2.4-r1 pinentry-1.1.0-r2 -pixman-0.38.4-r0 -pkgconf-1.6.3-r0 +pixman-0.40.0-r2 +pkgconf-1.7.2-r0 popt-1.16-r7 -python2-2.7.16-r3 -python3-3.8.2-r0 -qemu-4.2.0-r0 -qemu-aarch64-4.2.0-r0 -qemu-arm-4.2.0-r0 -qemu-guest-agent-4.2.0-r0 -qemu-img-4.2.0-r0 -qemu-ppc64le-4.2.0-r0 -qemu-system-arm-4.2.0-r0 -qemu-system-s390x-4.2.0-r0 -qemu-system-x86_64-4.2.0-r0 -readline-8.0.1-r0 -rhash-libs-1.3.9-r0 +python2-2.7.18-r0 +python3-3.8.5-r0 +qemu-5.0.0-r2 +qemu-aarch64-5.0.0-r2 +qemu-arm-5.0.0-r2 +qemu-guest-agent-5.0.0-r2 +qemu-img-5.0.0-r2 +qemu-ppc64le-5.0.0-r2 +qemu-system-arm-5.0.0-r2 +qemu-system-s390x-5.0.0-r2 +qemu-system-x86_64-5.0.0-r2 +readline-8.0.4-r0 +rhash-libs-1.3.9-r1 rpcbind-1.2.5-r0 rpcbind-openrc-1.2.5-r0 -rsync-3.1.3-r2 -rsync-openrc-3.1.3-r2 -samba-client-libs-4.11.5-r0 -samba-common-libs-4.11.5-r0 -samba-common-server-libs-4.11.5-r0 -samba-heimdal-libs-4.11.5-r0 -samba-libs-4.11.5-r0 -samba-server-libs-4.11.5-r0 -scanelf-1.2.4-r0 -sed-4.7-r0 -sfdisk-2.34-r1 -sg3_utils-1.44-r0 -sgdisk-1.0.4-r0 +rsync-3.1.3-r3 +rsync-openrc-3.1.3-r3 +samba-util-libs-4.12.7-r0 +scanelf-1.2.6-r0 +sed-4.8-r0 +setpriv-2.35.2-r0 +sfdisk-2.35.2-r0 +sg3_utils-1.45-r0 +sgdisk-1.0.5-r0 slang-2.3.2-r0 slang-dev-2.3.2-r0 -snappy-1.1.7-r1 +snappy-1.1.8-r2 sntpc-0.9-r6 -socat-1.7.3.3-r1 -spice-server-0.14.2-r1 -sqlite-libs-3.30.1-r1 +socat-1.7.3.4-r0 +spice-server-0.14.3-r0 +sqlite-libs-3.32.1-r0 squashfs-tools-4.4-r0 -ssl_client-1.31.1-r9 -sudo-1.8.31-r0 -swig-3.0.12-r4 +ssl_client-1.31.1-r19 +swig-4.0.1-r0 talloc-2.3.1-r0 tar-1.32-r1 -tcl-8.6.9-r0 -tcpdump-4.9.3-r0 -tdb-libs-1.4.3-r0 +tcl-8.6.10-r0 +tcpdump-4.9.3-r1 tevent-0.10.2-r0 -tini-0.18.0-r0 -tzdata-2019c-r0 -udev-init-scripts-33-r0 -udev-init-scripts-openrc-33-r0 -usbredir-0.8.0-r0 -userspace-rcu-0.11.1-r0 -util-linux-2.34-r1 -util-linux-dev-2.34-r1 +tini-0.19.0-r0 +tzdata-2020a-r0 +udev-init-scripts-33-r1 +udev-init-scripts-openrc-33-r1 +usbredir-0.8.0-r1 +userspace-rcu-0.12.1-r0 +util-linux-2.35.2-r0 +util-linux-dev-2.35.2-r0 vde2-libs-2.3.2-r12 -vim-8.2.0-r0 -virglrenderer-0.8.1-r0 -wayland-libs-client-1.17.0-r0 -wayland-libs-egl-1.17.0-r0 -wayland-libs-server-1.17.0-r0 -wireguard-tools-1.0.20200319-r0 -wireguard-tools-wg-1.0.20200319-r0 -wireguard-tools-wg-quick-1.0.20200319-r0 +vim-8.2.0735-r0 +virglrenderer-0.8.2-r1 +wayland-libs-client-1.18.0-r4 +wayland-libs-egl-1.18.0-r4 +wayland-libs-server-1.18.0-r4 +wireguard-tools-1.0.20200510-r0 +wireguard-tools-wg-1.0.20200510-r0 +wireguard-tools-wg-quick-1.0.20200510-r0 wireless-tools-30_pre9-r1 wpa_supplicant-2.9-r5 wpa_supplicant-openrc-2.9-r5 -xfsprogs-5.3.0-r0 -xfsprogs-extra-5.3.0-r0 +xfsprogs-5.6.0-r1 +xfsprogs-extra-5.6.0-r1 xorriso-1.5.2-r0 -xxd-8.2.0-r0 -xz-5.2.4-r0 -xz-dev-5.2.4-r0 -xz-libs-5.2.4-r0 -zfs-0.8.3-r1 -zfs-libs-0.8.3-r1 -zfs-openrc-0.8.3-r1 +xxd-8.2.0735-r0 +xz-5.2.5-r0 +xz-dev-5.2.5-r0 +xz-libs-5.2.5-r0 +zfs-0.8.4-r0 +zfs-libs-0.8.4-r0 +zfs-openrc-0.8.4-r0 zlib-1.2.11-r3 zlib-dev-1.2.11-r3 zlib-static-1.2.11-r3 -zstd-libs-1.4.4-r1 +zstd-libs-1.4.5-r0 diff --git a/tools/alpine/versions.x86_64 b/tools/alpine/versions.x86_64 index 3be5e83a12..ee7c0eec43 100644 --- a/tools/alpine/versions.x86_64 +++ b/tools/alpine/versions.x86_64 @@ -1,383 +1,375 @@ -# linuxkit/alpine:e2391e0b164c57db9f6c4ae110ee84f766edc430-amd64 +# linuxkit/alpine:a3d78322152a8b341bdaecfe182a2689fdbdee53-amd64 # automatically generated list of installed packages -abuild-3.5.0-r0 -alpine-baselayout-3.2.0-r3 -alpine-keys-2.1-r2 -alsa-lib-1.2.1.2-r0 -apk-tools-2.10.5-r0 +abuild-3.6.0-r0 +alpine-baselayout-3.2.0-r7 +alpine-keys-2.2-r0 +alsa-lib-1.2.2-r0 +apk-tools-2.10.5-r1 argon2-libs-20190702-r1 -argp-standalone-1.3-r3 +argp-standalone-1.3-r4 attr-2.4.48-r0 attr-dev-2.4.48-r0 audit-2.8.5-r0 audit-libs-2.8.5-r0 audit-openrc-2.8.5-r0 autoconf-2.69-r2 -automake-1.16.1-r0 -avahi-libs-0.7-r4 -bash-5.0.11-r1 +automake-1.16.2-r0 +bash-5.0.17-r0 bc-1.07.1-r1 -binutils-2.33.1-r0 -binutils-dev-2.33.1-r0 -bison-3.4.2-r0 -blkid-2.34-r1 +binutils-2.34-r1 +binutils-dev-2.34-r1 +bison-3.6.2-r0 +blkid-2.35.2-r0 bridge-utils-1.6-r0 -bsd-compat-headers-0.7.2-r0 -btrfs-progs-5.4-r0 -btrfs-progs-dev-5.4-r0 -btrfs-progs-libs-5.4-r0 -build-base-0.5-r1 -busybox-1.31.1-r9 +brotli-libs-1.0.9-r1 +bsd-compat-headers-0.7.2-r3 +btrfs-progs-5.6.1-r0 +btrfs-progs-dev-5.6.1-r0 +btrfs-progs-libs-5.6.1-r0 +build-base-0.5-r2 +busybox-1.31.1-r19 busybox-initscripts-3.2-r2 bzip2-1.0.8-r1 -ca-certificates-20191127-r1 -ca-certificates-cacert-20191127-r1 +ca-certificates-20191127-r4 +ca-certificates-bundle-20191127-r4 cairo-1.16.0-r2 -cdparanoia-libs-10.2-r7 +cdparanoia-libs-10.2-r8 cdrkit-1.1.11-r2 -cifs-utils-6.9-r1 -clang-9.0.0-r1 -clang-dev-9.0.0-r1 -clang-libs-9.0.0-r1 -clang-static-9.0.0-r1 -cmake-3.15.5-r0 -cmake-bash-completion-3.15.5-r0 -coreutils-8.31-r0 -cryptsetup-2.2.2-r0 -cryptsetup-libs-2.2.2-r0 -cryptsetup-openrc-2.2.2-r0 -cups-libs-2.2.12-r1 -curl-7.67.0-r0 +cfdisk-2.35.2-r0 +cifs-utils-6.10-r1 +clang-10.0.0-r2 +clang-dev-10.0.0-r2 +clang-extra-tools-10.0.0-r2 +clang-libs-10.0.0-r2 +clang-static-10.0.0-r2 +cmake-3.17.2-r0 +coreutils-8.32-r0 +cryptsetup-2.3.2-r1 +cryptsetup-libs-2.3.2-r1 +cryptsetup-openrc-2.3.2-r1 +curl-7.69.1-r1 db-5.3.28-r1 -dbus-libs-1.12.16-r2 -device-mapper-2.02.186-r0 -device-mapper-event-libs-2.02.186-r0 -device-mapper-libs-2.02.186-r0 -device-mapper-udev-2.02.186-r0 -dhcpcd-8.1.2-r0 -dhcpcd-openrc-8.1.2-r0 +dbus-libs-1.12.18-r0 +device-mapper-2.02.186-r1 +device-mapper-event-libs-2.02.186-r1 +device-mapper-libs-2.02.186-r1 +device-mapper-udev-2.02.186-r1 +dhcpcd-8.1.6-r0 +dhcpcd-openrc-8.1.6-r0 diffutils-3.7-r0 dosfstools-4.1-r1 -dtc-1.5.1-r0 -e2fsprogs-1.45.5-r0 -e2fsprogs-dev-1.45.5-r0 -e2fsprogs-extra-1.45.5-r0 -e2fsprogs-libs-1.45.5-r0 -elfutils-dev-0.168-r2 -elfutils-libelf-0.168-r2 -ethtool-5.3-r0 -eudev-3.2.9-r1 -eudev-libs-3.2.9-r1 -eudev-openrc-3.2.9-r1 +dtc-1.6.0-r0 +e2fsprogs-1.45.6-r0 +e2fsprogs-dev-1.45.6-r0 +e2fsprogs-extra-1.45.6-r0 +e2fsprogs-libs-1.45.6-r0 +elfutils-dev-0.179-r0 +ethtool-5.6-r0 +eudev-3.2.9-r3 +eudev-libs-3.2.9-r3 +eudev-openrc-3.2.9-r3 expat-2.2.9-r1 expect-5.45.4-r0 fakeroot-1.24-r0 -file-5.37-r1 -findmnt-2.34-r1 +file-5.38-r0 +findmnt-2.35.2-r0 findutils-4.7.0-r0 flex-2.6.4-r2 flex-dev-2.6.4-r2 flex-libs-2.6.4-r2 fontconfig-2.13.1-r2 fortify-headers-1.1-r0 -freetype-2.10.1-r0 -fribidi-1.0.8-r0 +freetype-2.10.2-r0 +fribidi-1.0.9-r0 fts-1.2.7-r1 fts-dev-1.2.7-r1 -fuse-2.9.8-r2 -fuse-common-3.9.0-r0 -fuse-openrc-3.9.0-r0 -g++-9.2.0-r4 -gc-8.0.4-r0 -gcc-9.2.0-r4 +g++-9.3.0-r2 +gc-8.0.4-r1 +gcc-9.3.0-r2 gdbm-1.13-r1 -gettext-0.20.1-r2 -gettext-asprintf-0.20.1-r2 -gettext-dev-0.20.1-r2 -gettext-libs-0.20.1-r2 -git-2.24.3-r0 -git-perl-2.24.3-r0 -glib-2.62.6-r0 -gmp-6.1.2-r1 -gmp-dev-6.1.2-r1 -gnupg-2.2.19-r0 -gnutls-3.6.10-r1 -go-1.13.4-r1 -graphite2-1.3.13-r1 -grep-3.3-r0 -gst-plugins-base-1.16.2-r0 -gstreamer-1.16.2-r0 -guile-2.0.14-r0 -guile-libs-2.0.14-r0 +gettext-0.20.2-r0 +gettext-asprintf-0.20.2-r0 +gettext-dev-0.20.2-r0 +gettext-libs-0.20.2-r0 +git-2.26.2-r0 +git-perl-2.26.2-r0 +glib-2.64.6-r0 +gmp-6.2.0-r0 +gmp-dev-6.2.0-r0 +gnupg-2.2.23-r0 +gnutls-3.6.15-r0 +go-1.13.14-r0 +graphite2-1.3.14-r0 +grep-3.4-r0 +gst-plugins-base-1.16.2-r3 +gstreamer-1.16.2-r2 +guile-2.0.14-r2 +guile-libs-2.0.14-r2 gummiboot-48.1-r0 -harfbuzz-2.6.4-r0 -hvtools-4.11.9-r0 -icu-libs-64.2-r1 +harfbuzz-2.6.6-r0 +hexdump-2.35.2-r0 +hvtools-4.11.9-r1 installkernel-3.5-r0 -iperf3-3.7-r0 -iperf3-openrc-3.7-r0 -iproute2-5.4.0-r1 -iptables-1.8.3-r2 -iptables-openrc-1.8.3-r2 -ipvsadm-1.30-r0 +iperf3-3.7-r2 +iperf3-openrc-3.7-r2 +iproute2-5.6.0-r0 +iptables-1.8.4-r2 +iptables-openrc-1.8.4-r2 +ipvsadm-1.31-r0 isl-0.18-r0 -jansson-2.12-r0 -jq-1.6-r0 -json-c-0.13.1-r0 -keyutils-1.6.1-r0 -keyutils-libs-1.6.1-r0 -kmod-26-r0 -kmod-openrc-26-r0 -krb5-conf-1.0-r1 -krb5-dev-1.17.1-r0 -krb5-libs-1.17.1-r0 -krb5-server-ldap-1.17.1-r0 -ldb-2.0.8-r0 +jq-1.6-r1 +json-c-0.14-r1 +keyutils-1.6.1-r1 +keyutils-libs-1.6.1-r1 +kmod-27-r0 +kmod-libs-27-r0 +kmod-openrc-27-r0 +krb5-conf-1.0-r2 +krb5-dev-1.18.2-r0 +krb5-libs-1.18.2-r0 +krb5-server-ldap-1.18.2-r0 lddtree-1.26-r2 libacl-2.2.53-r0 libaio-0.3.112-r1 -libarchive-3.4.2-r0 -libarchive-tools-3.4.2-r0 +libarchive-3.4.3-r1 +libarchive-tools-3.4.3-r1 libassuan-2.5.3-r0 -libatomic-9.2.0-r4 +libatomic-9.3.0-r2 libattr-2.4.48-r0 -libblkid-2.34-r1 +libblkid-2.35.2-r0 libbsd-0.10.0-r0 libburn-1.5.2-r0 libbz2-1.0.8-r1 -libc-dev-0.7.2-r0 -libc-utils-0.7.2-r0 -libc6-compat-1.1.24-r2 +libc-dev-0.7.2-r3 +libc-utils-0.7.2-r3 +libc6-compat-1.1.24-r9 libcap-2.27-r0 -libcap-ng-0.7.10-r0 -libcap-ng-dev-0.7.10-r0 -libcom_err-1.45.5-r0 +libcap-ng-0.7.10-r1 +libcap-ng-dev-0.7.10-r1 +libcom_err-1.45.6-r0 libcrypto1.1-1.1.1g-r0 -libcurl-7.67.0-r0 -libdrm-2.4.100-r0 -libedit-20191211.3.1-r0 -libedit-dev-20191211.3.1-r0 +libcurl-7.69.1-r1 +libdrm-2.4.102-r0 +libedit-20191231.3.1-r0 +libedit-dev-20191231.3.1-r0 +libelf-0.179-r0 libepoxy-1.5.4-r0 -libevent-2.1.11-r0 -libexecinfo-1.1-r1 -libexecinfo-dev-1.1-r1 -libfdisk-2.34-r1 -libfdt-1.5.1-r0 -libffi-3.2.1-r6 -libgcc-9.2.0-r4 +libevent-2.1.11-r1 +libfdisk-2.35.2-r0 +libfdt-1.6.0-r0 +libffi-3.3-r2 +libgcc-9.3.0-r2 libgcrypt-1.8.5-r0 -libgmpxx-6.1.2-r1 -libgomp-9.2.0-r4 -libgpg-error-1.36-r2 -libintl-0.20.1-r2 +libgmpxx-6.2.0-r0 +libgomp-9.3.0-r2 +libgpg-error-1.37-r0 +libgphobos-9.3.0-r2 +libintl-0.20.2-r0 libisoburn-1.5.2-r0 libisofs-1.5.2-r0 -libjpeg-turbo-2.0.4-r0 -libksba-1.3.5-r0 -libldap-2.4.48-r1 +libjpeg-turbo-2.0.5-r0 +libksba-1.4.0-r0 +libldap-2.4.50-r0 libltdl-2.4.6-r7 -libmagic-5.37-r1 +libmagic-5.38-r0 libmnl-1.0.4-r0 -libmount-2.34-r1 -libmspack-0.10.1_alpha-r0 -libnfsidmap-2.4.1-r2 -libnftnl-libs-1.1.5-r0 +libmount-2.35.2-r0 +libnfsidmap-2.4.3-r1 +libnftnl-libs-1.1.6-r0 libnl3-3.5.0-r0 libogg-1.3.4-r0 -libpcap-1.9.1-r0 +libpcap-1.9.1-r2 libpciaccess-0.16-r0 libpng-1.6.37-r1 -libressl-dev-3.0.2-r0 -libressl3.0-libcrypto-3.0.2-r0 -libressl3.0-libssl-3.0.2-r0 -libressl3.0-libtls-3.0.2-r0 -libsasl-2.1.27-r5 -libseccomp-2.4.2-r2 -libseccomp-dev-2.4.2-r2 -libsecret-0.19.1-r0 -libsmartcols-2.34-r1 +libressl-dev-3.1.2-r0 +libressl3.1-libcrypto-3.1.2-r0 +libressl3.1-libssl-3.1.2-r0 +libressl3.1-libtls-3.1.2-r0 +libsasl-2.1.27-r6 +libseccomp-2.4.3-r0 +libseccomp-dev-2.4.3-r0 +libsecret-0.20.3-r0 +libsmartcols-2.35.2-r0 libssl1.1-1.1.1g-r0 -libstdc++-9.2.0-r4 -libtasn1-4.15.0-r0 +libstdc++-9.3.0-r2 +libtasn1-4.16.0-r1 libtheora-1.1.1-r14 -libtirpc-1.1.4-r0 -libtirpc-dev-1.1.4-r0 -libtls-standalone-2.9.1-r0 +libtirpc-1.2.6-r0 +libtirpc-conf-1.2.6-r0 +libtirpc-dev-1.2.6-r0 +libtirpc-nokrb-1.2.6-r0 +libtls-standalone-2.9.1-r1 libtool-2.4.6-r7 +libucontext-0.11-r0 +libucontext-dev-0.11-r0 libunistring-0.9.10-r0 -libunwind-1.2.1-r3 -libunwind-dev-1.2.1-r3 +libunwind-1.4.0-r0 +libunwind-dev-1.4.0-r0 libusb-1.0.23-r0 -libuuid-2.34-r1 -libuv-1.34.0-r0 +libuuid-2.35.2-r0 +libuv-1.38.1-r0 libverto-0.3.1-r1 libvorbis-1.3.6-r2 -libwbclient-4.11.5-r0 -libx11-1.6.9-r0 +libwbclient-4.12.7-r0 +libx11-1.6.12-r0 libxau-1.0.9-r0 -libxcb-1.13.1-r0 +libxcb-1.14-r1 libxdamage-1.1.5-r0 libxdmcp-1.1.3-r0 libxext-1.3.4-r0 libxfixes-5.0.3-r2 libxft-2.3.3-r0 -libxkbcommon-0.9.1-r0 -libxml2-2.9.10-r2 +libxkbcommon-0.10.0-r1 +libxml2-2.9.10-r5 libxrender-0.9.10-r3 libxshmfence-1.3-r0 libxv-1.0.11-r2 libxxf86vm-1.1.4-r2 -linux-headers-4.19.36-r0 -linux-pam-1.3.1-r1 -llvm9-9.0.0-r1 -llvm9-dev-9.0.0-r1 -llvm9-libs-9.0.0-r1 -llvm9-static-9.0.0-r1 -lmdb-0.9.24-r1 -lsscsi-0.30-r0 -lua5.3-libs-5.3.5-r2 -luajit-2.1.0_beta3-r6 -luajit-dev-2.1.0_beta3-r6 -lvm2-libs-2.02.186-r0 +linux-headers-5.4.5-r1 +llvm10-10.0.0-r2 +llvm10-dev-10.0.0-r2 +llvm10-libs-10.0.0-r2 +llvm10-static-10.0.0-r2 +lsblk-2.35.2-r0 +lsscsi-0.31-r0 +lua5.3-libs-5.3.5-r6 +luajit-5.1.20190925-r0 +luajit-dev-5.1.20190925-r0 +lvm2-libs-2.02.186-r1 lz4-libs-1.9.2-r0 lzip-1.21-r0 lzo-2.10-r2 m4-1.4.18-r1 -make-4.2.1-r2 -mesa-19.2.7-r0 -mesa-egl-19.2.7-r0 -mesa-gbm-19.2.7-r0 -mesa-gl-19.2.7-r0 -mesa-glapi-19.2.7-r0 -mkinitfs-3.4.5-r0 +make-4.3-r0 +mcookie-2.35.2-r0 +mesa-20.0.7-r0 +mesa-egl-20.0.7-r0 +mesa-gbm-20.0.7-r0 +mesa-gl-20.0.7-r0 +mesa-glapi-20.0.7-r0 +mkinitfs-3.4.5-r3 mpc1-1.1.0-r1 mpc1-dev-1.1.0-r1 -mpfr-dev-4.0.2-r1 -mpfr4-4.0.2-r1 -mtools-4.0.23-r0 -multipath-tools-0.8.3-r4 -multipath-tools-openrc-0.8.3-r4 -musl-1.1.24-r2 -musl-dev-1.1.24-r2 -musl-utils-1.1.24-r2 -ncurses-dev-6.1_p20200118-r3 -ncurses-libs-6.1_p20200118-r3 -ncurses-terminfo-base-6.1_p20200118-r3 -nettle-3.5.1-r0 -nfs-utils-2.4.1-r2 -nfs-utils-openrc-2.4.1-r2 -nghttp2-libs-1.40.0-r0 +mpfr-dev-4.0.2-r4 +mpfr4-4.0.2-r4 +mtools-4.0.24-r0 +multipath-tools-0.8.4-r1 +multipath-tools-openrc-0.8.4-r1 +musl-1.1.24-r9 +musl-dev-1.1.24-r9 +musl-utils-1.1.24-r9 +ncurses-dev-6.2_p20200523-r0 +ncurses-libs-6.2_p20200523-r0 +ncurses-terminfo-base-6.2_p20200523-r0 +nettle-3.5.1-r1 +nfs-utils-2.4.3-r1 +nfs-utils-openrc-2.4.3-r1 +nghttp2-libs-1.41.0-r0 npth-1.6-r0 -oniguruma-6.9.4-r0 +oniguruma-6.9.5-r1 open-iscsi-2.1.0-r2 open-iscsi-libs-2.1.0-r2 open-iscsi-openrc-2.1.0-r2 -open-isns-lib-0.99-r0 -open-vm-tools-10.3.10-r2 -open-vm-tools-openrc-10.3.10-r2 +open-isns-lib-0.100-r0 +open-vm-tools-11.1.0-r3 +open-vm-tools-openrc-11.1.0-r3 openntpd-6.2_p3-r3 -openrc-0.42.1-r2 -openresolv-3.9.2-r0 -openssh-keygen-8.1_p1-r0 -openssh-server-8.1_p1-r0 -openssh-server-common-8.1_p1-r0 +openrc-0.42.1-r11 +openresolv-3.10.0-r0 +openssh-client-8.3_p1-r0 +openssh-keygen-8.3_p1-r0 +openssh-server-8.3_p1-r0 +openssh-server-common-8.3_p1-r0 openssl-1.1.1g-r0 openssl-dev-1.1.1g-r0 opus-1.3.1-r0 -orc-0.4.31-r0 +orc-0.4.31-r2 ovmf-0.0.201908-r0 -p11-kit-0.23.18.1-r0 -pango-1.44.7-r0 +p11-kit-0.23.20-r5 +pango-1.44.7-r2 patch-2.7.6-r6 -pax-utils-1.2.4-r0 -pcre-8.43-r0 -pcre2-10.34-r1 -pcsc-lite-libs-1.8.25-r2 -perl-5.30.1-r0 -perl-error-0.17028-r0 -perl-git-2.24.3-r0 -pigz-2.4-r0 +pcre-8.44-r0 +pcre2-10.35-r0 +pcsc-lite-libs-1.8.26-r0 +perl-5.30.3-r0 +perl-error-0.17029-r0 +perl-git-2.26.2-r0 +pigz-2.4-r1 pinentry-1.1.0-r2 -pixman-0.38.4-r0 -pkgconf-1.6.3-r0 +pixman-0.40.0-r2 +pkgconf-1.7.2-r0 popt-1.16-r7 -python2-2.7.16-r3 -python3-3.8.2-r0 -qemu-4.2.0-r0 -qemu-aarch64-4.2.0-r0 -qemu-arm-4.2.0-r0 -qemu-guest-agent-4.2.0-r0 -qemu-img-4.2.0-r0 -qemu-ppc64le-4.2.0-r0 -qemu-system-arm-4.2.0-r0 -qemu-system-x86_64-4.2.0-r0 -readline-8.0.1-r0 -rhash-libs-1.3.9-r0 +python2-2.7.18-r0 +python3-3.8.5-r0 +qemu-5.0.0-r2 +qemu-aarch64-5.0.0-r2 +qemu-arm-5.0.0-r2 +qemu-guest-agent-5.0.0-r2 +qemu-img-5.0.0-r2 +qemu-ppc64le-5.0.0-r2 +qemu-system-arm-5.0.0-r2 +qemu-system-x86_64-5.0.0-r2 +readline-8.0.4-r0 +rhash-libs-1.3.9-r1 rpcbind-1.2.5-r0 rpcbind-openrc-1.2.5-r0 -rsync-3.1.3-r2 -rsync-openrc-3.1.3-r2 -samba-client-libs-4.11.5-r0 -samba-common-libs-4.11.5-r0 -samba-common-server-libs-4.11.5-r0 -samba-heimdal-libs-4.11.5-r0 -samba-libs-4.11.5-r0 -samba-server-libs-4.11.5-r0 -scanelf-1.2.4-r0 -sed-4.7-r0 -sfdisk-2.34-r1 -sg3_utils-1.44-r0 -sgdisk-1.0.4-r0 +rsync-3.1.3-r3 +rsync-openrc-3.1.3-r3 +samba-util-libs-4.12.7-r0 +scanelf-1.2.6-r0 +sed-4.8-r0 +setpriv-2.35.2-r0 +sfdisk-2.35.2-r0 +sg3_utils-1.45-r0 +sgdisk-1.0.5-r0 slang-2.3.2-r0 slang-dev-2.3.2-r0 -snappy-1.1.7-r1 +snappy-1.1.8-r2 sntpc-0.9-r6 -socat-1.7.3.3-r1 -spice-server-0.14.2-r1 -sqlite-libs-3.30.1-r1 +socat-1.7.3.4-r0 +spice-server-0.14.3-r0 +sqlite-libs-3.32.1-r0 squashfs-tools-4.4-r0 -ssl_client-1.31.1-r9 -strace-5.3-r1 -sudo-1.8.31-r0 -swig-3.0.12-r4 +ssl_client-1.31.1-r19 +strace-5.6-r0 +swig-4.0.1-r0 syslinux-6.04_pre1-r6 talloc-2.3.1-r0 tar-1.32-r1 -tcl-8.6.9-r0 -tcpdump-4.9.3-r0 -tdb-libs-1.4.3-r0 +tcl-8.6.10-r0 +tcpdump-4.9.3-r1 tevent-0.10.2-r0 -tini-0.18.0-r0 -tzdata-2019c-r0 -udev-init-scripts-33-r0 -udev-init-scripts-openrc-33-r0 -usbredir-0.8.0-r0 -userspace-rcu-0.11.1-r0 -util-linux-2.34-r1 -util-linux-dev-2.34-r1 +tini-0.19.0-r0 +tzdata-2020a-r0 +udev-init-scripts-33-r1 +udev-init-scripts-openrc-33-r1 +usbredir-0.8.0-r1 +userspace-rcu-0.12.1-r0 +util-linux-2.35.2-r0 +util-linux-dev-2.35.2-r0 vde2-libs-2.3.2-r12 -vim-8.2.0-r0 -virglrenderer-0.8.1-r0 -wayland-libs-client-1.17.0-r0 -wayland-libs-egl-1.17.0-r0 -wayland-libs-server-1.17.0-r0 -wireguard-tools-1.0.20200319-r0 -wireguard-tools-wg-1.0.20200319-r0 -wireguard-tools-wg-quick-1.0.20200319-r0 +vim-8.2.0735-r0 +virglrenderer-0.8.2-r1 +wayland-libs-client-1.18.0-r4 +wayland-libs-egl-1.18.0-r4 +wayland-libs-server-1.18.0-r4 +wireguard-tools-1.0.20200510-r0 +wireguard-tools-wg-1.0.20200510-r0 +wireguard-tools-wg-quick-1.0.20200510-r0 wireless-tools-30_pre9-r1 wpa_supplicant-2.9-r5 wpa_supplicant-openrc-2.9-r5 -xfsprogs-5.3.0-r0 -xfsprogs-extra-5.3.0-r0 +xfsprogs-5.6.0-r1 +xfsprogs-extra-5.6.0-r1 xorriso-1.5.2-r0 -xxd-8.2.0-r0 -xz-5.2.4-r0 -xz-dev-5.2.4-r0 -xz-libs-5.2.4-r0 -zfs-0.8.3-r1 -zfs-libs-0.8.3-r1 -zfs-openrc-0.8.3-r1 +xxd-8.2.0735-r0 +xz-5.2.5-r0 +xz-dev-5.2.5-r0 +xz-libs-5.2.5-r0 +zfs-0.8.4-r0 +zfs-libs-0.8.4-r0 +zfs-openrc-0.8.4-r0 zlib-1.2.11-r3 zlib-dev-1.2.11-r3 zlib-static-1.2.11-r3 -zstd-libs-1.4.4-r1 +zstd-libs-1.4.5-r0 From a870f75a05585d4f8b54e6f274c75954e1545089 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Wed, 7 Oct 2020 19:51:13 +0300 Subject: [PATCH 09/20] include openssh-client in sshd pkg Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- examples/aws.yml | 2 +- examples/azure.yml | 2 +- examples/gcp.yml | 2 +- examples/hetzner.yml | 2 +- examples/openstack.yml | 2 +- examples/packet.yml | 2 +- examples/sshd.yml | 2 +- examples/vpnkit-forwarder.yml | 2 +- examples/vultr.yml | 2 +- pkg/sshd/Dockerfile | 3 ++- projects/miragesdk/examples/mirage-dhcp.yml | 2 +- 11 files changed, 12 insertions(+), 11 deletions(-) diff --git a/examples/aws.yml b/examples/aws.yml index 4f1d23e954..b2e57dcc28 100644 --- a/examples/aws.yml +++ b/examples/aws.yml @@ -18,7 +18,7 @@ services: - name: rngd image: linuxkit/rngd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 binds: - /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys - name: nginx diff --git a/examples/azure.yml b/examples/azure.yml index 838b938d7f..1a9638c5ce 100644 --- a/examples/azure.yml +++ b/examples/azure.yml @@ -15,7 +15,7 @@ services: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 files: - path: root/.ssh/authorized_keys source: ~/.ssh/id_rsa.pub diff --git a/examples/gcp.yml b/examples/gcp.yml index b27305be16..0e5dfa9e90 100644 --- a/examples/gcp.yml +++ b/examples/gcp.yml @@ -22,7 +22,7 @@ services: - name: rngd image: linuxkit/rngd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 binds: - /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys - name: nginx diff --git a/examples/hetzner.yml b/examples/hetzner.yml index b5d69380da..2d8b2460ff 100644 --- a/examples/hetzner.yml +++ b/examples/hetzner.yml @@ -28,7 +28,7 @@ services: env: - INSECURE=true - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 files: - path: root/.ssh/authorized_keys source: ~/.ssh/id_rsa.pub diff --git a/examples/openstack.yml b/examples/openstack.yml index 823e84b280..926cf4f723 100644 --- a/examples/openstack.yml +++ b/examples/openstack.yml @@ -19,7 +19,7 @@ services: - name: rngd image: linuxkit/rngd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 binds: - /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys - name: nginx diff --git a/examples/packet.yml b/examples/packet.yml index 59942bdd9e..204ec89611 100644 --- a/examples/packet.yml +++ b/examples/packet.yml @@ -28,7 +28,7 @@ services: env: - INSECURE=true - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 files: - path: root/.ssh/authorized_keys source: ~/.ssh/id_rsa.pub diff --git a/examples/sshd.yml b/examples/sshd.yml index dc55b68e48..21e3408251 100644 --- a/examples/sshd.yml +++ b/examples/sshd.yml @@ -22,7 +22,7 @@ services: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 files: - path: root/.ssh/authorized_keys source: ~/.ssh/id_rsa.pub diff --git a/examples/vpnkit-forwarder.yml b/examples/vpnkit-forwarder.yml index a16027463e..e7dff4356a 100644 --- a/examples/vpnkit-forwarder.yml +++ b/examples/vpnkit-forwarder.yml @@ -19,7 +19,7 @@ onboot: command: ["sh", "-c", "mkdir /host_var/vpnkit && mount -v -t 9p -o trans=virtio,dfltuid=1001,dfltgid=50,version=9p2000 port /host_var/vpnkit"] services: - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 - name: vpnkit-forwarder image: linuxkit/vpnkit-forwarder:v0.8 binds: diff --git a/examples/vultr.yml b/examples/vultr.yml index f98156bec8..ca8f80e9a4 100644 --- a/examples/vultr.yml +++ b/examples/vultr.yml @@ -23,7 +23,7 @@ services: - name: rngd image: linuxkit/rngd:v0.8 - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 binds: - /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys - name: nginx diff --git a/pkg/sshd/Dockerfile b/pkg/sshd/Dockerfile index 07dc258781..b0a829dcba 100644 --- a/pkg/sshd/Dockerfile +++ b/pkg/sshd/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/alpine:e2391e0b164c57db9f6c4ae110ee84f766edc430 AS mirror +FROM linuxkit/alpine:a3d78322152a8b341bdaecfe182a2689fdbdee53 AS mirror RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/ RUN apk add --no-cache --initdb -p /out \ @@ -7,6 +7,7 @@ RUN apk add --no-cache --initdb -p /out \ busybox \ ca-certificates \ musl \ + openssh-client \ openssh-server \ tini \ util-linux \ diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index c460dbf689..bce8380a42 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -28,7 +28,7 @@ onboot: - /lib:/lib # for ifconfig services: - name: sshd - image: linuxkit/sshd:v0.8 + image: linuxkit/sshd:666b4a1a323140aa1f332826164afba506abf597 - name: getty image: linuxkit/getty:v0.8 env: From d3ddeb813e2fc94a1a1420520d119e2bb6d820b5 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Wed, 7 Oct 2020 20:21:54 +0300 Subject: [PATCH 10/20] containerd 1.4.1 from latest version of lkt/alpine Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- examples/addbinds.yml | 2 +- examples/aws.yml | 2 +- examples/azure.yml | 2 +- examples/cadvisor.yml | 2 +- examples/dm-crypt-loop.yml | 2 +- examples/dm-crypt.yml | 2 +- examples/docker-for-mac.yml | 2 +- examples/docker.yml | 2 +- examples/gcp.yml | 2 +- examples/getty.yml | 2 +- examples/hetzner.yml | 2 +- examples/hostmount-writeable-overlay.yml | 2 +- examples/influxdb-os.yml | 2 +- examples/logging.yml | 2 +- examples/minimal.yml | 2 +- examples/node_exporter.yml | 2 +- examples/openstack.yml | 2 +- examples/packet.yml | 2 +- examples/redis-os.yml | 2 +- examples/rt-for-vmware.yml | 2 +- examples/scaleway.yml | 2 +- examples/sshd.yml | 2 +- examples/static-ip.yml | 2 +- examples/swap.yml | 2 +- examples/tpm.yml | 2 +- examples/vmware.yml | 2 +- examples/vpnkit-forwarder.yml | 2 +- examples/vsudd-containerd.yml | 2 +- examples/vultr.yml | 2 +- examples/wireguard.yml | 2 +- linuxkit.yml | 2 +- pkg/containerd/Dockerfile | 2 +- projects/compose/compose-dynamic.yml | 2 +- projects/compose/compose-static.yml | 2 +- projects/ima-namespace/ima-namespace.yml | 2 +- projects/memorizer/memorizer.yml | 2 +- projects/miragesdk/examples/fdd.yml | 2 +- projects/miragesdk/examples/mirage-dhcp.yml | 2 +- projects/okernel/examples/okernel_simple.yaml | 2 +- projects/shiftfs/shiftfs.yml | 2 +- test/cases/000_build/010_reproducible/test.yml | 2 +- test/cases/010_platforms/010_hyperkit/010_acpi/test.yml | 2 +- test/cases/030_security/000_docker-bench/test.yml | 2 +- test/cases/040_packages/003_containerd/test.yml | 2 +- test/cases/040_packages/007_getty-containerd/test.yml | 2 +- test/cases/040_packages/023_wireguard/test.yml | 2 +- test/cases/040_packages/030_logwrite/test.yml | 2 +- test/cases/040_packages/031_kmsg/test.yml | 2 +- test/hack/test-ltp.yml | 2 +- test/hack/test.yml | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/examples/addbinds.yml b/examples/addbinds.yml index 7b443145c2..e1319cf871 100644 --- a/examples/addbinds.yml +++ b/examples/addbinds.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:7195dc244cd92af01fd0895fd204249a6114c5e2 - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 - - linuxkit/containerd:8ee7a0d636fff9df7e13076f5492d06274e5f644 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:abfc6701b9ca17e34ac9439ce5946a247e720ff5 onboot: - name: sysctl diff --git a/examples/aws.yml b/examples/aws.yml index b2e57dcc28..9e796c2775 100644 --- a/examples/aws.yml +++ b/examples/aws.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/azure.yml b/examples/azure.yml index 1a9638c5ce..5045d54e6c 100644 --- a/examples/azure.yml +++ b/examples/azure.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/cadvisor.yml b/examples/cadvisor.yml index 376577b776..7f943666da 100644 --- a/examples/cadvisor.yml +++ b/examples/cadvisor.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/dm-crypt-loop.yml b/examples/dm-crypt-loop.yml index 1f21d069d3..23220268b1 100644 --- a/examples/dm-crypt-loop.yml +++ b/examples/dm-crypt-loop.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/dm-crypt.yml b/examples/dm-crypt.yml index 9e8bb73fcf..dfdbf918fa 100644 --- a/examples/dm-crypt.yml +++ b/examples/dm-crypt.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/docker-for-mac.yml b/examples/docker-for-mac.yml index 009cd5dac6..64faa25f76 100644 --- a/examples/docker-for-mac.yml +++ b/examples/docker-for-mac.yml @@ -6,7 +6,7 @@ init: - linuxkit/vpnkit-expose-port:v0.8 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: # support metadata for optional config in /run/config diff --git a/examples/docker.yml b/examples/docker.yml index 0374ae7a3d..8218983a72 100644 --- a/examples/docker.yml +++ b/examples/docker.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/gcp.yml b/examples/gcp.yml index 0e5dfa9e90..f3a0affcc6 100644 --- a/examples/gcp.yml +++ b/examples/gcp.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/getty.yml b/examples/getty.yml index 967894bbd3..9fb96978b6 100644 --- a/examples/getty.yml +++ b/examples/getty.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/hetzner.yml b/examples/hetzner.yml index 2d8b2460ff..840155fe20 100644 --- a/examples/hetzner.yml +++ b/examples/hetzner.yml @@ -5,7 +5,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/firmware:v0.8 onboot: diff --git a/examples/hostmount-writeable-overlay.yml b/examples/hostmount-writeable-overlay.yml index 49fc7dfa6e..b85f120d40 100644 --- a/examples/hostmount-writeable-overlay.yml +++ b/examples/hostmount-writeable-overlay.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/influxdb-os.yml b/examples/influxdb-os.yml index f40fc03051..b083864ef2 100644 --- a/examples/influxdb-os.yml +++ b/examples/influxdb-os.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: dhcpcd diff --git a/examples/logging.yml b/examples/logging.yml index 395d11ebd6..116e640b7a 100644 --- a/examples/logging.yml +++ b/examples/logging.yml @@ -5,7 +5,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/memlogd:v0.8 onboot: diff --git a/examples/minimal.yml b/examples/minimal.yml index f9fe4a2d9d..1be6be2052 100644 --- a/examples/minimal.yml +++ b/examples/minimal.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 diff --git a/examples/node_exporter.yml b/examples/node_exporter.yml index 403d4d3368..a48d509ced 100644 --- a/examples/node_exporter.yml +++ b/examples/node_exporter.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: - name: getty image: linuxkit/getty:v0.8 diff --git a/examples/openstack.yml b/examples/openstack.yml index 926cf4f723..b919cfdb43 100644 --- a/examples/openstack.yml +++ b/examples/openstack.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/packet.yml b/examples/packet.yml index 204ec89611..de0fb3aed8 100644 --- a/examples/packet.yml +++ b/examples/packet.yml @@ -5,7 +5,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/firmware:v0.8 onboot: diff --git a/examples/redis-os.yml b/examples/redis-os.yml index e3fc64482e..45caeffea2 100644 --- a/examples/redis-os.yml +++ b/examples/redis-os.yml @@ -6,7 +6,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 diff --git a/examples/rt-for-vmware.yml b/examples/rt-for-vmware.yml index ede93d32f6..3a3710719e 100644 --- a/examples/rt-for-vmware.yml +++ b/examples/rt-for-vmware.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/scaleway.yml b/examples/scaleway.yml index d10d57e960..54cdff223a 100644 --- a/examples/scaleway.yml +++ b/examples/scaleway.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/sshd.yml b/examples/sshd.yml index 21e3408251..da3194e603 100644 --- a/examples/sshd.yml +++ b/examples/sshd.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/static-ip.yml b/examples/static-ip.yml index 222d1916a7..f0abddf146 100644 --- a/examples/static-ip.yml +++ b/examples/static-ip.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: ip image: linuxkit/ip:v0.8 diff --git a/examples/swap.yml b/examples/swap.yml index ca82a4c032..095aa29582 100644 --- a/examples/swap.yml +++ b/examples/swap.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/tpm.yml b/examples/tpm.yml index 7490364422..9644a7e995 100644 --- a/examples/tpm.yml +++ b/examples/tpm.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/vmware.yml b/examples/vmware.yml index 89616d9063..8404cd8bee 100644 --- a/examples/vmware.yml +++ b/examples/vmware.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/vpnkit-forwarder.yml b/examples/vpnkit-forwarder.yml index e7dff4356a..4841e91230 100644 --- a/examples/vpnkit-forwarder.yml +++ b/examples/vpnkit-forwarder.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 diff --git a/examples/vsudd-containerd.yml b/examples/vsudd-containerd.yml index 1dad8f7246..a217b4a0b5 100644 --- a/examples/vsudd-containerd.yml +++ b/examples/vsudd-containerd.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 diff --git a/examples/vultr.yml b/examples/vultr.yml index ca8f80e9a4..afcb418449 100644 --- a/examples/vultr.yml +++ b/examples/vultr.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/examples/wireguard.yml b/examples/wireguard.yml index 3b83c40d4f..d305a66674 100644 --- a/examples/wireguard.yml +++ b/examples/wireguard.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/linuxkit.yml b/linuxkit.yml index da8315c792..0f92a3aad1 100644 --- a/linuxkit.yml +++ b/linuxkit.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/pkg/containerd/Dockerfile b/pkg/containerd/Dockerfile index 9fbf4e7ddf..4c9989ede4 100644 --- a/pkg/containerd/Dockerfile +++ b/pkg/containerd/Dockerfile @@ -1,4 +1,4 @@ -FROM linuxkit/alpine:e2391e0b164c57db9f6c4ae110ee84f766edc430 as alpine +FROM linuxkit/alpine:a3d78322152a8b341bdaecfe182a2689fdbdee53 as alpine RUN apk add tzdata WORKDIR $GOPATH/src/github.com/containerd/containerd diff --git a/projects/compose/compose-dynamic.yml b/projects/compose/compose-dynamic.yml index e54af320bb..6eaedaca47 100644 --- a/projects/compose/compose-dynamic.yml +++ b/projects/compose/compose-dynamic.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/projects/compose/compose-static.yml b/projects/compose/compose-static.yml index ad6d5330d4..21c0555de5 100644 --- a/projects/compose/compose-static.yml +++ b/projects/compose/compose-static.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/projects/ima-namespace/ima-namespace.yml b/projects/ima-namespace/ima-namespace.yml index 800762086f..ecd5171297 100644 --- a/projects/ima-namespace/ima-namespace.yml +++ b/projects/ima-namespace/ima-namespace.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/ima-utils:dfeb3896fd29308b80ff9ba7fe5b8b767e40ca29 onboot: diff --git a/projects/memorizer/memorizer.yml b/projects/memorizer/memorizer.yml index 23d0ad2696..e94f7eeb84 100644 --- a/projects/memorizer/memorizer.yml +++ b/projects/memorizer/memorizer.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 diff --git a/projects/miragesdk/examples/fdd.yml b/projects/miragesdk/examples/fdd.yml index 66c00fd1ce..8dbb0e8bd8 100644 --- a/projects/miragesdk/examples/fdd.yml +++ b/projects/miragesdk/examples/fdd.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - samoht/fdd onboot: diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index bce8380a42..07e6f6e0df 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: sysctl image: linuxkit/sysctl:v0.8 diff --git a/projects/okernel/examples/okernel_simple.yaml b/projects/okernel/examples/okernel_simple.yaml index 9dc6949303..d029e5602f 100644 --- a/projects/okernel/examples/okernel_simple.yaml +++ b/projects/okernel/examples/okernel_simple.yaml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/projects/shiftfs/shiftfs.yml b/projects/shiftfs/shiftfs.yml index 9cd42b6cec..4e26840c33 100644 --- a/projects/shiftfs/shiftfs.yml +++ b/projects/shiftfs/shiftfs.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/test/cases/000_build/010_reproducible/test.yml b/test/cases/000_build/010_reproducible/test.yml index b234a7986d..7bb392ac09 100644 --- a/test/cases/000_build/010_reproducible/test.yml +++ b/test/cases/000_build/010_reproducible/test.yml @@ -5,7 +5,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd diff --git a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml index f8364d3015..a440b09126 100644 --- a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml +++ b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: - name: acpid image: linuxkit/acpid:v0.8 diff --git a/test/cases/030_security/000_docker-bench/test.yml b/test/cases/030_security/000_docker-bench/test.yml index f5c71486bb..f0612f7df2 100644 --- a/test/cases/030_security/000_docker-bench/test.yml +++ b/test/cases/030_security/000_docker-bench/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: sysctl diff --git a/test/cases/040_packages/003_containerd/test.yml b/test/cases/040_packages/003_containerd/test.yml index b81921b87d..b1943fad2d 100644 --- a/test/cases/040_packages/003_containerd/test.yml +++ b/test/cases/040_packages/003_containerd/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/007_getty-containerd/test.yml b/test/cases/040_packages/007_getty-containerd/test.yml index 207458994d..d62f62d505 100644 --- a/test/cases/040_packages/007_getty-containerd/test.yml +++ b/test/cases/040_packages/007_getty-containerd/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/023_wireguard/test.yml b/test/cases/040_packages/023_wireguard/test.yml index 778f6f4373..6c5a2fb10a 100644 --- a/test/cases/040_packages/023_wireguard/test.yml +++ b/test/cases/040_packages/023_wireguard/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/030_logwrite/test.yml b/test/cases/040_packages/030_logwrite/test.yml index d905f3168b..019cf73665 100644 --- a/test/cases/040_packages/030_logwrite/test.yml +++ b/test/cases/040_packages/030_logwrite/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/memlogd:v0.8 services: diff --git a/test/cases/040_packages/031_kmsg/test.yml b/test/cases/040_packages/031_kmsg/test.yml index f36d133e72..e749e57b1c 100644 --- a/test/cases/040_packages/031_kmsg/test.yml +++ b/test/cases/040_packages/031_kmsg/test.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 - linuxkit/memlogd:v0.8 services: diff --git a/test/hack/test-ltp.yml b/test/hack/test-ltp.yml index bbb7029b3d..0098587abb 100644 --- a/test/hack/test-ltp.yml +++ b/test/hack/test-ltp.yml @@ -4,7 +4,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: ltp image: linuxkit/test-ltp:0967388fb338867dddd3c1a72470a1a7cec5a0dd diff --git a/test/hack/test.yml b/test/hack/test.yml index ea6cd46362..4036495134 100644 --- a/test/hack/test.yml +++ b/test/hack/test.yml @@ -6,7 +6,7 @@ kernel: init: - linuxkit/init:v0.8 - linuxkit/runc:v0.8 - - linuxkit/containerd:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: - name: dhcpcd image: linuxkit/dhcpcd:v0.8 From 06bac3e3e7ca4705a86b0e4cbaaa91e1f7a75019 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Mon, 19 Oct 2020 14:49:15 +0300 Subject: [PATCH 11/20] add containerd cli opts Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- docs/faq.md | 23 +++++++++++++++++++++++ pkg/init/cmd/service/system_init.go | 13 ++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index c459bd9bbf..0c1f9e08e1 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -37,6 +37,29 @@ If you're not seeing `containerd` logs in the console during boot, make sure tha `init` and other processes like `containerd` will use the last defined console in the kernel `cmdline`. When using `qemu`, to see the console you need to list `ttyS0` as the last console to properly see the output. +## Enabling debug or trace log levels on containerd + +On startup, linuxkit looks for and parses a file `/etc/containerd/cli-opts`. If it exists, the content is used as arguments to containerd. Thus, to enable +a higher log level, for example `debug`, create a file whose contents are `--log-level debug` and place it on the image: + +```yml +files: + - path: /etc/containerd/cli-opts + contents: "--log-level debug" +``` + +Note that the package that parses the contents splits on _all_ whitespace. It does not, as of this writing, support shell-like parsing, so the following will work: + +``` +--log-level debug --arg abcd +``` + +while the following will not: + +``` +--log-level debug --arg 'abcd def' +``` + ## Troubleshooting containers Linuxkit runs all services in a specific `containerd` namespace called `services.linuxkit`. To list all the defined containers: diff --git a/pkg/init/cmd/service/system_init.go b/pkg/init/cmd/service/system_init.go index 3ca71b50c2..21670b78b2 100644 --- a/pkg/init/cmd/service/system_init.go +++ b/pkg/init/cmd/service/system_init.go @@ -8,6 +8,7 @@ import ( "os" "os/exec" "path/filepath" + "strings" "syscall" "time" @@ -17,6 +18,10 @@ import ( log "github.com/sirupsen/logrus" ) +const ( + containerdOptsFile = "/etc/containerd/cli-opts" +) + func cleanupTask(ctx context.Context, ctr containerd.Container) error { task, err := ctr.Task(ctx, nil) if err != nil { @@ -78,8 +83,14 @@ func systemInitCmd(ctx context.Context, args []string) { // remove (unlikely) old containerd socket _ = os.Remove(*sock) + // look for containerd options + ctrdArgs := []string{} + if b, err := ioutil.ReadFile(containerdOptsFile); err != nil { + ctrdArgs = strings.Fields(string(b)) + } + // start up containerd - cmd := exec.Command(*binary) + cmd := exec.Command(*binary, ctrdArgs...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Start(); err != nil { From 7a0b966943f6e48c2fa31a5c3818854c0565e450 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Mon, 19 Oct 2020 14:49:40 +0300 Subject: [PATCH 12/20] update hashes for containerd opts Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- examples/addbinds.yml | 2 +- examples/aws.yml | 2 +- examples/azure.yml | 2 +- examples/cadvisor.yml | 2 +- examples/dm-crypt-loop.yml | 2 +- examples/dm-crypt.yml | 2 +- examples/docker-for-mac.yml | 2 +- examples/docker.yml | 2 +- examples/gcp.yml | 2 +- examples/getty.yml | 2 +- examples/hetzner.yml | 2 +- examples/hostmount-writeable-overlay.yml | 2 +- examples/influxdb-os.yml | 2 +- examples/logging.yml | 2 +- examples/minimal.yml | 2 +- examples/node_exporter.yml | 2 +- examples/openstack.yml | 2 +- examples/packet.yml | 2 +- examples/redis-os.yml | 2 +- examples/rt-for-vmware.yml | 2 +- examples/scaleway.yml | 2 +- examples/sshd.yml | 2 +- examples/static-ip.yml | 2 +- examples/swap.yml | 2 +- examples/tpm.yml | 2 +- examples/vmware.yml | 2 +- examples/vpnkit-forwarder.yml | 2 +- examples/vsudd-containerd.yml | 2 +- examples/vultr.yml | 2 +- examples/wireguard.yml | 2 +- linuxkit.yml | 2 +- projects/clear-containers/clear-containers.yml | 2 +- projects/compose/compose-dynamic.yml | 2 +- projects/compose/compose-static.yml | 2 +- projects/ima-namespace/ima-namespace.yml | 2 +- projects/landlock/landlock.yml | 2 +- projects/memorizer/memorizer.yml | 2 +- projects/miragesdk/examples/fdd.yml | 2 +- projects/miragesdk/examples/mirage-dhcp.yml | 2 +- projects/okernel/examples/okernel_simple.yaml | 2 +- projects/shiftfs/shiftfs.yml | 2 +- src/cmd/linuxkit/moby/linuxkit.go | 2 +- test/cases/000_build/000_formats/test.yml | 2 +- test/cases/000_build/010_reproducible/test.yml | 2 +- test/cases/000_build/020_binds/test.yml | 2 +- .../cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/000_qemu/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/000_qemu/010_run_iso/test.yml | 2 +- test/cases/010_platforms/000_qemu/020_run_efi/test.yml | 2 +- test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/050_run_aws/test.yml | 2 +- test/cases/010_platforms/000_qemu/100_container/test.yml | 2 +- .../010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/010_hyperkit/010_acpi/test.yml | 2 +- test/cases/010_platforms/110_gcp/000_run/test.yml | 2 +- test/cases/020_kernel/002_config_4.14.x/test.yml | 2 +- test/cases/020_kernel/005_config_4.19.x/test.yml | 2 +- test/cases/020_kernel/011_config_5.4.x/test.yml | 2 +- test/cases/020_kernel/012_config_5.6.x/test.yml | 2 +- test/cases/020_kernel/102_kmod_4.14.x/test.yml | 2 +- test/cases/020_kernel/105_kmod_4.19.x/test.yml | 2 +- test/cases/020_kernel/111_kmod_5.4.x/test.yml | 2 +- test/cases/020_kernel/112_kmod_5.6.x/test.yml | 2 +- test/cases/020_kernel/200_namespace/common.yml | 2 +- test/cases/030_security/000_docker-bench/test.yml | 2 +- test/cases/030_security/010_ports/test.yml | 2 +- test/cases/040_packages/002_binfmt/test.yml | 2 +- test/cases/040_packages/002_bpftrace/test.yml | 2 +- test/cases/040_packages/003_ca-certificates/test.yml | 2 +- test/cases/040_packages/003_containerd/test.yml | 2 +- test/cases/040_packages/004_dhcpcd/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/000_simple/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/001_luks/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/002_key/test.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test-create.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test-create.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/000_auto/test.yml | 2 +- test/cases/040_packages/006_format_mount/001_by_label/test.yml | 2 +- .../cases/040_packages/006_format_mount/002_by_name/test.yml.in | 2 +- test/cases/040_packages/006_format_mount/003_btrfs/test.yml | 2 +- test/cases/040_packages/006_format_mount/004_xfs/test.yml | 2 +- .../040_packages/006_format_mount/005_by_device_force/test.yml | 2 +- test/cases/040_packages/006_format_mount/006_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/010_multiple/test.yml | 2 +- test/cases/040_packages/007_getty-containerd/test.yml | 2 +- test/cases/040_packages/008_metadata/000_cidata/test.yml | 2 +- test/cases/040_packages/012_losetup/test.yml | 2 +- test/cases/040_packages/013_mkimage/mkimage.yml | 2 +- test/cases/040_packages/013_mkimage/run.yml | 2 +- test/cases/040_packages/019_sysctl/test.yml | 2 +- test/cases/040_packages/023_wireguard/test.yml | 2 +- test/cases/040_packages/030_logwrite/test.yml | 2 +- test/cases/040_packages/031_kmsg/test.yml | 2 +- test/cases/040_packages/032_bcc/test.yml | 2 +- test/hack/test-ltp.yml | 2 +- test/hack/test.yml | 2 +- test/pkg/ns/template.yml | 2 +- 105 files changed, 105 insertions(+), 105 deletions(-) diff --git a/examples/addbinds.yml b/examples/addbinds.yml index e1319cf871..8c9b5cae3b 100644 --- a/examples/addbinds.yml +++ b/examples/addbinds.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:7195dc244cd92af01fd0895fd204249a6114c5e2 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:abfc6701b9ca17e34ac9439ce5946a247e720ff5 diff --git a/examples/aws.yml b/examples/aws.yml index 9e796c2775..1fc0fc1fa3 100644 --- a/examples/aws.yml +++ b/examples/aws.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/azure.yml b/examples/azure.yml index 5045d54e6c..bf776d105b 100644 --- a/examples/azure.yml +++ b/examples/azure.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/cadvisor.yml b/examples/cadvisor.yml index 7f943666da..2d1d696725 100644 --- a/examples/cadvisor.yml +++ b/examples/cadvisor.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt-loop.yml b/examples/dm-crypt-loop.yml index 23220268b1..b92792a19c 100644 --- a/examples/dm-crypt-loop.yml +++ b/examples/dm-crypt-loop.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt.yml b/examples/dm-crypt.yml index dfdbf918fa..538e61fae4 100644 --- a/examples/dm-crypt.yml +++ b/examples/dm-crypt.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker-for-mac.yml b/examples/docker-for-mac.yml index 64faa25f76..ac11c55c0e 100644 --- a/examples/docker-for-mac.yml +++ b/examples/docker-for-mac.yml @@ -4,7 +4,7 @@ kernel: cmdline: "console=ttyS0 page_poison=1" init: - linuxkit/vpnkit-expose-port:v0.8 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker.yml b/examples/docker.yml index 8218983a72..479b49f5fb 100644 --- a/examples/docker.yml +++ b/examples/docker.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/gcp.yml b/examples/gcp.yml index f3a0affcc6..b7d7d63e37 100644 --- a/examples/gcp.yml +++ b/examples/gcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/getty.yml b/examples/getty.yml index 9fb96978b6..610a8a18a4 100644 --- a/examples/getty.yml +++ b/examples/getty.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hetzner.yml b/examples/hetzner.yml index 840155fe20..3b8d3448c0 100644 --- a/examples/hetzner.yml +++ b/examples/hetzner.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hostmount-writeable-overlay.yml b/examples/hostmount-writeable-overlay.yml index b85f120d40..2a728c1eb1 100644 --- a/examples/hostmount-writeable-overlay.yml +++ b/examples/hostmount-writeable-overlay.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/influxdb-os.yml b/examples/influxdb-os.yml index b083864ef2..baace2c63c 100644 --- a/examples/influxdb-os.yml +++ b/examples/influxdb-os.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/logging.yml b/examples/logging.yml index 116e640b7a..e98de22aff 100644 --- a/examples/logging.yml +++ b/examples/logging.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/minimal.yml b/examples/minimal.yml index 1be6be2052..2e778908db 100644 --- a/examples/minimal.yml +++ b/examples/minimal.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/node_exporter.yml b/examples/node_exporter.yml index a48d509ced..15812e7a02 100644 --- a/examples/node_exporter.yml +++ b/examples/node_exporter.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/examples/openstack.yml b/examples/openstack.yml index b919cfdb43..ef6e3f7ca5 100644 --- a/examples/openstack.yml +++ b/examples/openstack.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/packet.yml b/examples/packet.yml index de0fb3aed8..5594f63f06 100644 --- a/examples/packet.yml +++ b/examples/packet.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/redis-os.yml b/examples/redis-os.yml index 45caeffea2..e115a6df1c 100644 --- a/examples/redis-os.yml +++ b/examples/redis-os.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/rt-for-vmware.yml b/examples/rt-for-vmware.yml index 3a3710719e..e444cc0d00 100644 --- a/examples/rt-for-vmware.yml +++ b/examples/rt-for-vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.28-rt cmdline: "console=tty0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/scaleway.yml b/examples/scaleway.yml index 54cdff223a..73c5db2acb 100644 --- a/examples/scaleway.yml +++ b/examples/scaleway.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0 root=/dev/vda" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/sshd.yml b/examples/sshd.yml index da3194e603..e588e7358c 100644 --- a/examples/sshd.yml +++ b/examples/sshd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/static-ip.yml b/examples/static-ip.yml index f0abddf146..1059af3829 100644 --- a/examples/static-ip.yml +++ b/examples/static-ip.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/swap.yml b/examples/swap.yml index 095aa29582..117cd696d2 100644 --- a/examples/swap.yml +++ b/examples/swap.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/tpm.yml b/examples/tpm.yml index 9644a7e995..b18cf565f7 100644 --- a/examples/tpm.yml +++ b/examples/tpm.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vmware.yml b/examples/vmware.yml index 8404cd8bee..7378dcbf87 100644 --- a/examples/vmware.yml +++ b/examples/vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vpnkit-forwarder.yml b/examples/vpnkit-forwarder.yml index 4841e91230..f3febd6651 100644 --- a/examples/vpnkit-forwarder.yml +++ b/examples/vpnkit-forwarder.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vsudd-containerd.yml b/examples/vsudd-containerd.yml index a217b4a0b5..89cbb046b8 100644 --- a/examples/vsudd-containerd.yml +++ b/examples/vsudd-containerd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vultr.yml b/examples/vultr.yml index afcb418449..8046c71c66 100644 --- a/examples/vultr.yml +++ b/examples/vultr.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/wireguard.yml b/examples/wireguard.yml index d305a66674..f5f6ff3273 100644 --- a/examples/wireguard.yml +++ b/examples/wireguard.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/linuxkit.yml b/linuxkit.yml index 0f92a3aad1..9f3c6a8f6b 100644 --- a/linuxkit.yml +++ b/linuxkit.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/clear-containers/clear-containers.yml b/projects/clear-containers/clear-containers.yml index 39a9a37b9f..6b372f09f6 100644 --- a/projects/clear-containers/clear-containers.yml +++ b/projects/clear-containers/clear-containers.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-clear-containers:4.9.x cmdline: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k panic=1 console=hvc0 console=hvc1 initcall_debug iommu=off quiet cryptomgr.notests page_poison=on" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde onboot: - name: sysctl image: mobylinux/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c diff --git a/projects/compose/compose-dynamic.yml b/projects/compose/compose-dynamic.yml index 6eaedaca47..3b425624aa 100644 --- a/projects/compose/compose-dynamic.yml +++ b/projects/compose/compose-dynamic.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/compose/compose-static.yml b/projects/compose/compose-static.yml index 21c0555de5..bc934e4143 100644 --- a/projects/compose/compose-static.yml +++ b/projects/compose/compose-static.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/ima-namespace/ima-namespace.yml b/projects/ima-namespace/ima-namespace.yml index ecd5171297..042f819456 100644 --- a/projects/ima-namespace/ima-namespace.yml +++ b/projects/ima-namespace/ima-namespace.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-ima:4.11.1-186dd3605ee7b23214850142f8f02b4679dbd148 cmdline: "console=ttyS0 console=tty0 page_poison=1 ima_appraise=enforce_ns" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/landlock/landlock.yml b/projects/landlock/landlock.yml index 84b9ab8a1b..b31506e768 100644 --- a/projects/landlock/landlock.yml +++ b/projects/landlock/landlock.yml @@ -2,7 +2,7 @@ kernel: image: mobylinux/kernel-landlock:4.9.x cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - mobylinux/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 - mobylinux/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b - mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935 diff --git a/projects/memorizer/memorizer.yml b/projects/memorizer/memorizer.yml index e94f7eeb84..934ff807af 100644 --- a/projects/memorizer/memorizer.yml +++ b/projects/memorizer/memorizer.yml @@ -2,7 +2,7 @@ kernel: image: "linuxkitprojects/kernel-memorizer:4.10_dbg" cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/miragesdk/examples/fdd.yml b/projects/miragesdk/examples/fdd.yml index 8dbb0e8bd8..bef690f00b 100644 --- a/projects/miragesdk/examples/fdd.yml +++ b/projects/miragesdk/examples/fdd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.9.34 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index 07e6f6e0df..5e0942245b 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/okernel/examples/okernel_simple.yaml b/projects/okernel/examples/okernel_simple.yaml index d029e5602f..e7e0f4b99b 100644 --- a/projects/okernel/examples/okernel_simple.yaml +++ b/projects/okernel/examples/okernel_simple.yaml @@ -2,7 +2,7 @@ kernel: image: okernel:latest cmdline: "console=tty0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/shiftfs/shiftfs.yml b/projects/shiftfs/shiftfs.yml index 4e26840c33..d43ccb4272 100644 --- a/projects/shiftfs/shiftfs.yml +++ b/projects/shiftfs/shiftfs.yml @@ -2,7 +2,7 @@ kernel: image: linuxkitprojects/kernel-shiftfs:4.11.4-881a041fc14bd95814cf140b5e98d97dd65160b5 cmdline: "console=ttyS0 console=tty0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/src/cmd/linuxkit/moby/linuxkit.go b/src/cmd/linuxkit/moby/linuxkit.go index ec66bf2101..bb159bb835 100644 --- a/src/cmd/linuxkit/moby/linuxkit.go +++ b/src/cmd/linuxkit/moby/linuxkit.go @@ -17,7 +17,7 @@ kernel: image: linuxkit/kernel:4.9.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/000_build/000_formats/test.yml b/test/cases/000_build/000_formats/test.yml index a2419080ff..33385d0358 100644 --- a/test/cases/000_build/000_formats/test.yml +++ b/test/cases/000_build/000_formats/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/000_build/010_reproducible/test.yml b/test/cases/000_build/010_reproducible/test.yml index 7bb392ac09..77ccaaa5b5 100644 --- a/test/cases/000_build/010_reproducible/test.yml +++ b/test/cases/000_build/010_reproducible/test.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f diff --git a/test/cases/000_build/020_binds/test.yml b/test/cases/000_build/020_binds/test.yml index 714d99594a..4f1f7f743d 100644 --- a/test/cases/000_build/020_binds/test.yml +++ b/test/cases/000_build/020_binds/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:7195dc244cd92af01fd0895fd204249a6114c5e2 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 onboot: - name: mount diff --git a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml index c2f3e492a9..bfa5b5e107 100644 --- a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml index c2f3e492a9..bfa5b5e107 100644 --- a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml index 9440aef3c5..b25a730e8a 100644 --- a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml +++ b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml +++ b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml +++ b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/100_container/test.yml b/test/cases/010_platforms/000_qemu/100_container/test.yml index 2e01432bdf..c65db6741f 100644 --- a/test/cases/010_platforms/000_qemu/100_container/test.yml +++ b/test/cases/010_platforms/000_qemu/100_container/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml index a440b09126..c14e53dcdf 100644 --- a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml +++ b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/test/cases/010_platforms/110_gcp/000_run/test.yml b/test/cases/010_platforms/110_gcp/000_run/test.yml index affb24193f..2d8c416d18 100644 --- a/test/cases/010_platforms/110_gcp/000_run/test.yml +++ b/test/cases/010_platforms/110_gcp/000_run/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/020_kernel/002_config_4.14.x/test.yml b/test/cases/020_kernel/002_config_4.14.x/test.yml index e4e62c49c6..68ae23bc21 100644 --- a/test/cases/020_kernel/002_config_4.14.x/test.yml +++ b/test/cases/020_kernel/002_config_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/005_config_4.19.x/test.yml b/test/cases/020_kernel/005_config_4.19.x/test.yml index baf52d24ce..d93affcaff 100644 --- a/test/cases/020_kernel/005_config_4.19.x/test.yml +++ b/test/cases/020_kernel/005_config_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/011_config_5.4.x/test.yml b/test/cases/020_kernel/011_config_5.4.x/test.yml index cd0f8ba79b..337b74de71 100644 --- a/test/cases/020_kernel/011_config_5.4.x/test.yml +++ b/test/cases/020_kernel/011_config_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/012_config_5.6.x/test.yml b/test/cases/020_kernel/012_config_5.6.x/test.yml index 8721ae478d..b3111d74e4 100644 --- a/test/cases/020_kernel/012_config_5.6.x/test.yml +++ b/test/cases/020_kernel/012_config_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/102_kmod_4.14.x/test.yml b/test/cases/020_kernel/102_kmod_4.14.x/test.yml index 6cbf4a7211..39585f3e22 100644 --- a/test/cases/020_kernel/102_kmod_4.14.x/test.yml +++ b/test/cases/020_kernel/102_kmod_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/105_kmod_4.19.x/test.yml b/test/cases/020_kernel/105_kmod_4.19.x/test.yml index 63e6aed9ab..1a72e6cd67 100644 --- a/test/cases/020_kernel/105_kmod_4.19.x/test.yml +++ b/test/cases/020_kernel/105_kmod_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/111_kmod_5.4.x/test.yml b/test/cases/020_kernel/111_kmod_5.4.x/test.yml index 3e5cdfec86..94438fecf9 100644 --- a/test/cases/020_kernel/111_kmod_5.4.x/test.yml +++ b/test/cases/020_kernel/111_kmod_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/112_kmod_5.6.x/test.yml b/test/cases/020_kernel/112_kmod_5.6.x/test.yml index 57ccd0f70d..72806ddcd3 100644 --- a/test/cases/020_kernel/112_kmod_5.6.x/test.yml +++ b/test/cases/020_kernel/112_kmod_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/200_namespace/common.yml b/test/cases/020_kernel/200_namespace/common.yml index 331e71f0f3..34c11e9a9e 100644 --- a/test/cases/020_kernel/200_namespace/common.yml +++ b/test/cases/020_kernel/200_namespace/common.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 trust: org: diff --git a/test/cases/030_security/000_docker-bench/test.yml b/test/cases/030_security/000_docker-bench/test.yml index f0612f7df2..769b27ffef 100644 --- a/test/cases/030_security/000_docker-bench/test.yml +++ b/test/cases/030_security/000_docker-bench/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/030_security/010_ports/test.yml b/test/cases/030_security/010_ports/test.yml index d6321cdd49..2250a9b324 100644 --- a/test/cases/030_security/010_ports/test.yml +++ b/test/cases/030_security/010_ports/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: test diff --git a/test/cases/040_packages/002_binfmt/test.yml b/test/cases/040_packages/002_binfmt/test.yml index 53f55a30c3..1899a86e55 100644 --- a/test/cases/040_packages/002_binfmt/test.yml +++ b/test/cases/040_packages/002_binfmt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: binfmt diff --git a/test/cases/040_packages/002_bpftrace/test.yml b/test/cases/040_packages/002_bpftrace/test.yml index e5ed8a1876..d5f4d5764b 100644 --- a/test/cases/040_packages/002_bpftrace/test.yml +++ b/test/cases/040_packages/002_bpftrace/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/bpftrace:v0.8 onboot: diff --git a/test/cases/040_packages/003_ca-certificates/test.yml b/test/cases/040_packages/003_ca-certificates/test.yml index 583feeaa30..4a4d1717f4 100644 --- a/test/cases/040_packages/003_ca-certificates/test.yml +++ b/test/cases/040_packages/003_ca-certificates/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/ca-certificates:v0.8 onboot: diff --git a/test/cases/040_packages/003_containerd/test.yml b/test/cases/040_packages/003_containerd/test.yml index b1943fad2d..e0fff2fb43 100644 --- a/test/cases/040_packages/003_containerd/test.yml +++ b/test/cases/040_packages/003_containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/004_dhcpcd/test.yml b/test/cases/040_packages/004_dhcpcd/test.yml index 52d694b287..47ccd79cce 100644 --- a/test/cases/040_packages/004_dhcpcd/test.yml +++ b/test/cases/040_packages/004_dhcpcd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml index 6f1da1310c..fe1e95efff 100644 --- a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml +++ b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml index 0694c4e23b..69c764e759 100644 --- a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml +++ b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/002_key/test.yml b/test/cases/040_packages/004_dm-crypt/002_key/test.yml index 7d73d60394..b68b9873b1 100644 --- a/test/cases/040_packages/004_dm-crypt/002_key/test.yml +++ b/test/cases/040_packages/004_dm-crypt/002_key/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/005_extend/000_ext4/test-create.yml b/test/cases/040_packages/005_extend/000_ext4/test-create.yml index 16e3209c22..26f8a0c1fb 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test-create.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/000_ext4/test.yml b/test/cases/040_packages/005_extend/000_ext4/test.yml index d6531f0f4a..31b285bc14 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml index 642951e216..14609961b0 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/001_btrfs/test.yml b/test/cases/040_packages/005_extend/001_btrfs/test.yml index f1a20cc6c2..7da3d03d0b 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/002_xfs/test-create.yml b/test/cases/040_packages/005_extend/002_xfs/test-create.yml index 8ac2e8fc1a..ebc242f08e 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test-create.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/002_xfs/test.yml b/test/cases/040_packages/005_extend/002_xfs/test.yml index 5d53ef2f97..598ee6dbf4 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/003_gpt/test-create.yml b/test/cases/040_packages/005_extend/003_gpt/test-create.yml index df7f2dc941..82ce094b2c 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test-create.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/003_gpt/test.yml b/test/cases/040_packages/005_extend/003_gpt/test.yml index d6531f0f4a..31b285bc14 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/006_format_mount/000_auto/test.yml b/test/cases/040_packages/006_format_mount/000_auto/test.yml index c218c59e7b..ca0633de2e 100644 --- a/test/cases/040_packages/006_format_mount/000_auto/test.yml +++ b/test/cases/040_packages/006_format_mount/000_auto/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/001_by_label/test.yml b/test/cases/040_packages/006_format_mount/001_by_label/test.yml index f6838c30df..5d4de6ffae 100644 --- a/test/cases/040_packages/006_format_mount/001_by_label/test.yml +++ b/test/cases/040_packages/006_format_mount/001_by_label/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in index 3300f10b80..79c99de2b0 100644 --- a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in +++ b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml index 0202ae0e57..b86a594ac8 100644 --- a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml +++ b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/006_format_mount/004_xfs/test.yml b/test/cases/040_packages/006_format_mount/004_xfs/test.yml index c02b4973ad..d4afbb5e37 100644 --- a/test/cases/040_packages/006_format_mount/004_xfs/test.yml +++ b/test/cases/040_packages/006_format_mount/004_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml index 2d9586679e..1c2aaa3741 100644 --- a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml +++ b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/006_gpt/test.yml b/test/cases/040_packages/006_format_mount/006_gpt/test.yml index 3284b6e70e..c69129b71a 100644 --- a/test/cases/040_packages/006_format_mount/006_gpt/test.yml +++ b/test/cases/040_packages/006_format_mount/006_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/010_multiple/test.yml b/test/cases/040_packages/006_format_mount/010_multiple/test.yml index 17d09fa9b6..96937c01b5 100644 --- a/test/cases/040_packages/006_format_mount/010_multiple/test.yml +++ b/test/cases/040_packages/006_format_mount/010_multiple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/007_getty-containerd/test.yml b/test/cases/040_packages/007_getty-containerd/test.yml index d62f62d505..a28500aef2 100644 --- a/test/cases/040_packages/007_getty-containerd/test.yml +++ b/test/cases/040_packages/007_getty-containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/008_metadata/000_cidata/test.yml b/test/cases/040_packages/008_metadata/000_cidata/test.yml index 6d0a0f1753..f0205fca4b 100644 --- a/test/cases/040_packages/008_metadata/000_cidata/test.yml +++ b/test/cases/040_packages/008_metadata/000_cidata/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: metadata diff --git a/test/cases/040_packages/012_losetup/test.yml b/test/cases/040_packages/012_losetup/test.yml index bd8f730849..db2d54fd56 100644 --- a/test/cases/040_packages/012_losetup/test.yml +++ b/test/cases/040_packages/012_losetup/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: losetup diff --git a/test/cases/040_packages/013_mkimage/mkimage.yml b/test/cases/040_packages/013_mkimage/mkimage.yml index 502c9d5193..2f65381008 100644 --- a/test/cases/040_packages/013_mkimage/mkimage.yml +++ b/test/cases/040_packages/013_mkimage/mkimage.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/040_packages/013_mkimage/run.yml b/test/cases/040_packages/013_mkimage/run.yml index 54a942e3fb..6d9c247351 100644 --- a/test/cases/040_packages/013_mkimage/run.yml +++ b/test/cases/040_packages/013_mkimage/run.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/040_packages/019_sysctl/test.yml b/test/cases/040_packages/019_sysctl/test.yml index 66c2c0e92f..47012071c6 100644 --- a/test/cases/040_packages/019_sysctl/test.yml +++ b/test/cases/040_packages/019_sysctl/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: sysctl diff --git a/test/cases/040_packages/023_wireguard/test.yml b/test/cases/040_packages/023_wireguard/test.yml index 6c5a2fb10a..86c471ef76 100644 --- a/test/cases/040_packages/023_wireguard/test.yml +++ b/test/cases/040_packages/023_wireguard/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/030_logwrite/test.yml b/test/cases/040_packages/030_logwrite/test.yml index 019cf73665..47e42159a9 100644 --- a/test/cases/040_packages/030_logwrite/test.yml +++ b/test/cases/040_packages/030_logwrite/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/031_kmsg/test.yml b/test/cases/040_packages/031_kmsg/test.yml index e749e57b1c..5d257a24ba 100644 --- a/test/cases/040_packages/031_kmsg/test.yml +++ b/test/cases/040_packages/031_kmsg/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/032_bcc/test.yml b/test/cases/040_packages/032_bcc/test.yml index 481fc231f4..ce28645842 100644 --- a/test/cases/040_packages/032_bcc/test.yml +++ b/test/cases/040_packages/032_bcc/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/kernel-bcc:5.4.39 onboot: diff --git a/test/hack/test-ltp.yml b/test/hack/test-ltp.yml index 0098587abb..22aa093fe2 100644 --- a/test/hack/test-ltp.yml +++ b/test/hack/test-ltp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/hack/test.yml b/test/hack/test.yml index 4036495134..854e31aa9d 100644 --- a/test/hack/test.yml +++ b/test/hack/test.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/pkg/ns/template.yml b/test/pkg/ns/template.yml index a5c1bcfd78..00f0b29a2a 100644 --- a/test/pkg/ns/template.yml +++ b/test/pkg/ns/template.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:v0.8 + - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde - linuxkit/runc:v0.8 onboot: - name: test-ns From 08f9e3da8c9da10691d5b29321cab4f54eb495a2 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Mon, 19 Oct 2020 17:26:25 +0300 Subject: [PATCH 13/20] fix reversed equals error Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- pkg/init/cmd/service/system_init.go | 2 +- .../040_packages/020_init_containerd/check.sh | 13 +++++++++ .../040_packages/020_init_containerd/test.sh | 24 ++++++++++++++++ .../040_packages/020_init_containerd/test.yml | 28 +++++++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 test/cases/040_packages/020_init_containerd/check.sh create mode 100644 test/cases/040_packages/020_init_containerd/test.sh create mode 100644 test/cases/040_packages/020_init_containerd/test.yml diff --git a/pkg/init/cmd/service/system_init.go b/pkg/init/cmd/service/system_init.go index 21670b78b2..58a4045247 100644 --- a/pkg/init/cmd/service/system_init.go +++ b/pkg/init/cmd/service/system_init.go @@ -85,7 +85,7 @@ func systemInitCmd(ctx context.Context, args []string) { // look for containerd options ctrdArgs := []string{} - if b, err := ioutil.ReadFile(containerdOptsFile); err != nil { + if b, err := ioutil.ReadFile(containerdOptsFile); err == nil { ctrdArgs = strings.Fields(string(b)) } diff --git a/test/cases/040_packages/020_init_containerd/check.sh b/test/cases/040_packages/020_init_containerd/check.sh new file mode 100644 index 0000000000..9e62043e23 --- /dev/null +++ b/test/cases/040_packages/020_init_containerd/check.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +function failed { + printf "containerd commandline vars not set: FAILED\n" >/dev/console + /sbin/poweroff -f + exit 1 +} + +ps -ef | grep containerd | grep -q trace || failed + +printf "containerd commandline vars test suite PASSED\n" >/dev/console + +/sbin/poweroff -f diff --git a/test/cases/040_packages/020_init_containerd/test.sh b/test/cases/040_packages/020_init_containerd/test.sh new file mode 100644 index 0000000000..46203e684c --- /dev/null +++ b/test/cases/040_packages/020_init_containerd/test.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# SUMMARY: Check that the containerd command-line options have been enabled by init +# LABELS: +# REPEAT: + +set -e + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" +NAME=init_containerd + +clean_up() { + rm -rf ${NAME}-* +} +trap clean_up EXIT + +# Test code goes here +linuxkit build -format kernel+initrd -name "${NAME}" test.yml +RESULT="$(linuxkit run $NAME)" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/040_packages/020_init_containerd/test.yml b/test/cases/040_packages/020_init_containerd/test.yml new file mode 100644 index 0000000000..adb612cbd9 --- /dev/null +++ b/test/cases/040_packages/020_init_containerd/test.yml @@ -0,0 +1,28 @@ +kernel: + image: linuxkit/kernel:5.4.39 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/runc:v0.8 + - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f + - linuxkit/ca-certificates:v0.8 +services: + - name: test + image: alpine:3.11 + pid: host + binds: + - /check.sh:/check.sh + - /dev/console:/dev/console + capabilities: + - CAP_SYS_BOOT + command: ["sh", "/check.sh"] +files: + - path: check.sh + source: ./check.sh + - path: /etc/containerd/cli-opts + contents: "--log-level trace" +trust: + org: + - linuxkit + image: + - alpine:3.11 From 299a260644ddf64d5d9ebefb16cf5fa38c76b5ef Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Mon, 19 Oct 2020 17:29:19 +0300 Subject: [PATCH 14/20] update hashes for pkg/init Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- examples/addbinds.yml | 2 +- examples/aws.yml | 2 +- examples/azure.yml | 2 +- examples/cadvisor.yml | 2 +- examples/dm-crypt-loop.yml | 2 +- examples/dm-crypt.yml | 2 +- examples/docker-for-mac.yml | 2 +- examples/docker.yml | 2 +- examples/gcp.yml | 2 +- examples/getty.yml | 2 +- examples/hetzner.yml | 2 +- examples/hostmount-writeable-overlay.yml | 2 +- examples/influxdb-os.yml | 2 +- examples/logging.yml | 2 +- examples/minimal.yml | 2 +- examples/node_exporter.yml | 2 +- examples/openstack.yml | 2 +- examples/packet.yml | 2 +- examples/redis-os.yml | 2 +- examples/rt-for-vmware.yml | 2 +- examples/scaleway.yml | 2 +- examples/sshd.yml | 2 +- examples/static-ip.yml | 2 +- examples/swap.yml | 2 +- examples/tpm.yml | 2 +- examples/vmware.yml | 2 +- examples/vpnkit-forwarder.yml | 2 +- examples/vsudd-containerd.yml | 2 +- examples/vultr.yml | 2 +- examples/wireguard.yml | 2 +- linuxkit.yml | 2 +- projects/clear-containers/clear-containers.yml | 2 +- projects/compose/compose-dynamic.yml | 2 +- projects/compose/compose-static.yml | 2 +- projects/ima-namespace/ima-namespace.yml | 2 +- projects/landlock/landlock.yml | 2 +- projects/memorizer/memorizer.yml | 2 +- projects/miragesdk/examples/fdd.yml | 2 +- projects/miragesdk/examples/mirage-dhcp.yml | 2 +- projects/okernel/examples/okernel_simple.yaml | 2 +- projects/shiftfs/shiftfs.yml | 2 +- src/cmd/linuxkit/moby/linuxkit.go | 2 +- test/cases/000_build/000_formats/test.yml | 2 +- test/cases/000_build/010_reproducible/test.yml | 2 +- test/cases/000_build/020_binds/test.yml | 2 +- .../cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/000_qemu/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/000_qemu/010_run_iso/test.yml | 2 +- test/cases/010_platforms/000_qemu/020_run_efi/test.yml | 2 +- test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/050_run_aws/test.yml | 2 +- test/cases/010_platforms/000_qemu/100_container/test.yml | 2 +- .../010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/010_hyperkit/010_acpi/test.yml | 2 +- test/cases/010_platforms/110_gcp/000_run/test.yml | 2 +- test/cases/020_kernel/002_config_4.14.x/test.yml | 2 +- test/cases/020_kernel/005_config_4.19.x/test.yml | 2 +- test/cases/020_kernel/011_config_5.4.x/test.yml | 2 +- test/cases/020_kernel/012_config_5.6.x/test.yml | 2 +- test/cases/020_kernel/102_kmod_4.14.x/test.yml | 2 +- test/cases/020_kernel/105_kmod_4.19.x/test.yml | 2 +- test/cases/020_kernel/111_kmod_5.4.x/test.yml | 2 +- test/cases/020_kernel/112_kmod_5.6.x/test.yml | 2 +- test/cases/020_kernel/200_namespace/common.yml | 2 +- test/cases/030_security/000_docker-bench/test.yml | 2 +- test/cases/030_security/010_ports/test.yml | 2 +- test/cases/040_packages/002_binfmt/test.yml | 2 +- test/cases/040_packages/002_bpftrace/test.yml | 2 +- test/cases/040_packages/003_ca-certificates/test.yml | 2 +- test/cases/040_packages/003_containerd/test.yml | 2 +- test/cases/040_packages/004_dhcpcd/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/000_simple/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/001_luks/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/002_key/test.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test-create.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test-create.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/000_auto/test.yml | 2 +- test/cases/040_packages/006_format_mount/001_by_label/test.yml | 2 +- .../cases/040_packages/006_format_mount/002_by_name/test.yml.in | 2 +- test/cases/040_packages/006_format_mount/003_btrfs/test.yml | 2 +- test/cases/040_packages/006_format_mount/004_xfs/test.yml | 2 +- .../040_packages/006_format_mount/005_by_device_force/test.yml | 2 +- test/cases/040_packages/006_format_mount/006_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/010_multiple/test.yml | 2 +- test/cases/040_packages/007_getty-containerd/test.yml | 2 +- test/cases/040_packages/008_metadata/000_cidata/test.yml | 2 +- test/cases/040_packages/012_losetup/test.yml | 2 +- test/cases/040_packages/013_mkimage/mkimage.yml | 2 +- test/cases/040_packages/013_mkimage/run.yml | 2 +- test/cases/040_packages/019_sysctl/test.yml | 2 +- test/cases/040_packages/023_wireguard/test.yml | 2 +- test/cases/040_packages/030_logwrite/test.yml | 2 +- test/cases/040_packages/031_kmsg/test.yml | 2 +- test/cases/040_packages/032_bcc/test.yml | 2 +- test/hack/test-ltp.yml | 2 +- test/hack/test.yml | 2 +- test/pkg/ns/template.yml | 2 +- 105 files changed, 105 insertions(+), 105 deletions(-) diff --git a/examples/addbinds.yml b/examples/addbinds.yml index 8c9b5cae3b..ed9c9f21e5 100644 --- a/examples/addbinds.yml +++ b/examples/addbinds.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:abfc6701b9ca17e34ac9439ce5946a247e720ff5 diff --git a/examples/aws.yml b/examples/aws.yml index 1fc0fc1fa3..f5242d9f18 100644 --- a/examples/aws.yml +++ b/examples/aws.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/azure.yml b/examples/azure.yml index bf776d105b..fdcd6c604d 100644 --- a/examples/azure.yml +++ b/examples/azure.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/cadvisor.yml b/examples/cadvisor.yml index 2d1d696725..e9c4a26ce0 100644 --- a/examples/cadvisor.yml +++ b/examples/cadvisor.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt-loop.yml b/examples/dm-crypt-loop.yml index b92792a19c..221e002b4d 100644 --- a/examples/dm-crypt-loop.yml +++ b/examples/dm-crypt-loop.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt.yml b/examples/dm-crypt.yml index 538e61fae4..c169a39a2f 100644 --- a/examples/dm-crypt.yml +++ b/examples/dm-crypt.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker-for-mac.yml b/examples/docker-for-mac.yml index ac11c55c0e..b4b3da003f 100644 --- a/examples/docker-for-mac.yml +++ b/examples/docker-for-mac.yml @@ -4,7 +4,7 @@ kernel: cmdline: "console=ttyS0 page_poison=1" init: - linuxkit/vpnkit-expose-port:v0.8 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker.yml b/examples/docker.yml index 479b49f5fb..8de9eb3d8d 100644 --- a/examples/docker.yml +++ b/examples/docker.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/gcp.yml b/examples/gcp.yml index b7d7d63e37..d10bce601e 100644 --- a/examples/gcp.yml +++ b/examples/gcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/getty.yml b/examples/getty.yml index 610a8a18a4..097431c0d3 100644 --- a/examples/getty.yml +++ b/examples/getty.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hetzner.yml b/examples/hetzner.yml index 3b8d3448c0..5a0ece1c1d 100644 --- a/examples/hetzner.yml +++ b/examples/hetzner.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hostmount-writeable-overlay.yml b/examples/hostmount-writeable-overlay.yml index 2a728c1eb1..0dc1b54a5c 100644 --- a/examples/hostmount-writeable-overlay.yml +++ b/examples/hostmount-writeable-overlay.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/influxdb-os.yml b/examples/influxdb-os.yml index baace2c63c..9fc03007bb 100644 --- a/examples/influxdb-os.yml +++ b/examples/influxdb-os.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/logging.yml b/examples/logging.yml index e98de22aff..62d7a8367c 100644 --- a/examples/logging.yml +++ b/examples/logging.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/minimal.yml b/examples/minimal.yml index 2e778908db..48ce438bd1 100644 --- a/examples/minimal.yml +++ b/examples/minimal.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/node_exporter.yml b/examples/node_exporter.yml index 15812e7a02..a05c14e040 100644 --- a/examples/node_exporter.yml +++ b/examples/node_exporter.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/examples/openstack.yml b/examples/openstack.yml index ef6e3f7ca5..73cdc87679 100644 --- a/examples/openstack.yml +++ b/examples/openstack.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/packet.yml b/examples/packet.yml index 5594f63f06..6876b42560 100644 --- a/examples/packet.yml +++ b/examples/packet.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/redis-os.yml b/examples/redis-os.yml index e115a6df1c..91110bbb98 100644 --- a/examples/redis-os.yml +++ b/examples/redis-os.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/rt-for-vmware.yml b/examples/rt-for-vmware.yml index e444cc0d00..ebe292d55f 100644 --- a/examples/rt-for-vmware.yml +++ b/examples/rt-for-vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.28-rt cmdline: "console=tty0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/scaleway.yml b/examples/scaleway.yml index 73c5db2acb..90562e5000 100644 --- a/examples/scaleway.yml +++ b/examples/scaleway.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0 root=/dev/vda" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/sshd.yml b/examples/sshd.yml index e588e7358c..7896ba77e2 100644 --- a/examples/sshd.yml +++ b/examples/sshd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/static-ip.yml b/examples/static-ip.yml index 1059af3829..67c5cb1d3b 100644 --- a/examples/static-ip.yml +++ b/examples/static-ip.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/swap.yml b/examples/swap.yml index 117cd696d2..47e5e45b56 100644 --- a/examples/swap.yml +++ b/examples/swap.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/tpm.yml b/examples/tpm.yml index b18cf565f7..dd6134a3b4 100644 --- a/examples/tpm.yml +++ b/examples/tpm.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vmware.yml b/examples/vmware.yml index 7378dcbf87..b797b2d7da 100644 --- a/examples/vmware.yml +++ b/examples/vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vpnkit-forwarder.yml b/examples/vpnkit-forwarder.yml index f3febd6651..3453c095f9 100644 --- a/examples/vpnkit-forwarder.yml +++ b/examples/vpnkit-forwarder.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vsudd-containerd.yml b/examples/vsudd-containerd.yml index 89cbb046b8..8e650eb3be 100644 --- a/examples/vsudd-containerd.yml +++ b/examples/vsudd-containerd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vultr.yml b/examples/vultr.yml index 8046c71c66..17ba4f7fb5 100644 --- a/examples/vultr.yml +++ b/examples/vultr.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/wireguard.yml b/examples/wireguard.yml index f5f6ff3273..a93f59faec 100644 --- a/examples/wireguard.yml +++ b/examples/wireguard.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/linuxkit.yml b/linuxkit.yml index 9f3c6a8f6b..cf62487023 100644 --- a/linuxkit.yml +++ b/linuxkit.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/clear-containers/clear-containers.yml b/projects/clear-containers/clear-containers.yml index 6b372f09f6..88ea66aecf 100644 --- a/projects/clear-containers/clear-containers.yml +++ b/projects/clear-containers/clear-containers.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-clear-containers:4.9.x cmdline: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k panic=1 console=hvc0 console=hvc1 initcall_debug iommu=off quiet cryptomgr.notests page_poison=on" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a onboot: - name: sysctl image: mobylinux/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c diff --git a/projects/compose/compose-dynamic.yml b/projects/compose/compose-dynamic.yml index 3b425624aa..fe2b7a6c44 100644 --- a/projects/compose/compose-dynamic.yml +++ b/projects/compose/compose-dynamic.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/compose/compose-static.yml b/projects/compose/compose-static.yml index bc934e4143..4af1877b81 100644 --- a/projects/compose/compose-static.yml +++ b/projects/compose/compose-static.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/ima-namespace/ima-namespace.yml b/projects/ima-namespace/ima-namespace.yml index 042f819456..2f580ed7d4 100644 --- a/projects/ima-namespace/ima-namespace.yml +++ b/projects/ima-namespace/ima-namespace.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-ima:4.11.1-186dd3605ee7b23214850142f8f02b4679dbd148 cmdline: "console=ttyS0 console=tty0 page_poison=1 ima_appraise=enforce_ns" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/landlock/landlock.yml b/projects/landlock/landlock.yml index b31506e768..129606a460 100644 --- a/projects/landlock/landlock.yml +++ b/projects/landlock/landlock.yml @@ -2,7 +2,7 @@ kernel: image: mobylinux/kernel-landlock:4.9.x cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - mobylinux/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 - mobylinux/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b - mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935 diff --git a/projects/memorizer/memorizer.yml b/projects/memorizer/memorizer.yml index 934ff807af..368511dbe7 100644 --- a/projects/memorizer/memorizer.yml +++ b/projects/memorizer/memorizer.yml @@ -2,7 +2,7 @@ kernel: image: "linuxkitprojects/kernel-memorizer:4.10_dbg" cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/miragesdk/examples/fdd.yml b/projects/miragesdk/examples/fdd.yml index bef690f00b..5e3ec78f87 100644 --- a/projects/miragesdk/examples/fdd.yml +++ b/projects/miragesdk/examples/fdd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.9.34 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index 5e0942245b..77b48ff2ed 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/okernel/examples/okernel_simple.yaml b/projects/okernel/examples/okernel_simple.yaml index e7e0f4b99b..3b5173df51 100644 --- a/projects/okernel/examples/okernel_simple.yaml +++ b/projects/okernel/examples/okernel_simple.yaml @@ -2,7 +2,7 @@ kernel: image: okernel:latest cmdline: "console=tty0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/shiftfs/shiftfs.yml b/projects/shiftfs/shiftfs.yml index d43ccb4272..27963ea1a1 100644 --- a/projects/shiftfs/shiftfs.yml +++ b/projects/shiftfs/shiftfs.yml @@ -2,7 +2,7 @@ kernel: image: linuxkitprojects/kernel-shiftfs:4.11.4-881a041fc14bd95814cf140b5e98d97dd65160b5 cmdline: "console=ttyS0 console=tty0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/src/cmd/linuxkit/moby/linuxkit.go b/src/cmd/linuxkit/moby/linuxkit.go index bb159bb835..38df6c8f0c 100644 --- a/src/cmd/linuxkit/moby/linuxkit.go +++ b/src/cmd/linuxkit/moby/linuxkit.go @@ -17,7 +17,7 @@ kernel: image: linuxkit/kernel:4.9.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/000_build/000_formats/test.yml b/test/cases/000_build/000_formats/test.yml index 33385d0358..abacb6c0e9 100644 --- a/test/cases/000_build/000_formats/test.yml +++ b/test/cases/000_build/000_formats/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/000_build/010_reproducible/test.yml b/test/cases/000_build/010_reproducible/test.yml index 77ccaaa5b5..a9d3d8662b 100644 --- a/test/cases/000_build/010_reproducible/test.yml +++ b/test/cases/000_build/010_reproducible/test.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f diff --git a/test/cases/000_build/020_binds/test.yml b/test/cases/000_build/020_binds/test.yml index 4f1f7f743d..e4783de7c3 100644 --- a/test/cases/000_build/020_binds/test.yml +++ b/test/cases/000_build/020_binds/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 onboot: - name: mount diff --git a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml index bfa5b5e107..385c1dccc6 100644 --- a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml index bfa5b5e107..385c1dccc6 100644 --- a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml index b25a730e8a..fd705c27e9 100644 --- a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml +++ b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml +++ b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml +++ b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/100_container/test.yml b/test/cases/010_platforms/000_qemu/100_container/test.yml index c65db6741f..b6664930dd 100644 --- a/test/cases/010_platforms/000_qemu/100_container/test.yml +++ b/test/cases/010_platforms/000_qemu/100_container/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml index c14e53dcdf..d46617e62d 100644 --- a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml +++ b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/test/cases/010_platforms/110_gcp/000_run/test.yml b/test/cases/010_platforms/110_gcp/000_run/test.yml index 2d8c416d18..5ba1c586a5 100644 --- a/test/cases/010_platforms/110_gcp/000_run/test.yml +++ b/test/cases/010_platforms/110_gcp/000_run/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/020_kernel/002_config_4.14.x/test.yml b/test/cases/020_kernel/002_config_4.14.x/test.yml index 68ae23bc21..aa2b99b926 100644 --- a/test/cases/020_kernel/002_config_4.14.x/test.yml +++ b/test/cases/020_kernel/002_config_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/005_config_4.19.x/test.yml b/test/cases/020_kernel/005_config_4.19.x/test.yml index d93affcaff..8c3c6cfdef 100644 --- a/test/cases/020_kernel/005_config_4.19.x/test.yml +++ b/test/cases/020_kernel/005_config_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/011_config_5.4.x/test.yml b/test/cases/020_kernel/011_config_5.4.x/test.yml index 337b74de71..5a52b4494f 100644 --- a/test/cases/020_kernel/011_config_5.4.x/test.yml +++ b/test/cases/020_kernel/011_config_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/012_config_5.6.x/test.yml b/test/cases/020_kernel/012_config_5.6.x/test.yml index b3111d74e4..a1d019719b 100644 --- a/test/cases/020_kernel/012_config_5.6.x/test.yml +++ b/test/cases/020_kernel/012_config_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/102_kmod_4.14.x/test.yml b/test/cases/020_kernel/102_kmod_4.14.x/test.yml index 39585f3e22..4e64b37cb0 100644 --- a/test/cases/020_kernel/102_kmod_4.14.x/test.yml +++ b/test/cases/020_kernel/102_kmod_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/105_kmod_4.19.x/test.yml b/test/cases/020_kernel/105_kmod_4.19.x/test.yml index 1a72e6cd67..a05d5480cf 100644 --- a/test/cases/020_kernel/105_kmod_4.19.x/test.yml +++ b/test/cases/020_kernel/105_kmod_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/111_kmod_5.4.x/test.yml b/test/cases/020_kernel/111_kmod_5.4.x/test.yml index 94438fecf9..5c6b00528b 100644 --- a/test/cases/020_kernel/111_kmod_5.4.x/test.yml +++ b/test/cases/020_kernel/111_kmod_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/112_kmod_5.6.x/test.yml b/test/cases/020_kernel/112_kmod_5.6.x/test.yml index 72806ddcd3..56e27af488 100644 --- a/test/cases/020_kernel/112_kmod_5.6.x/test.yml +++ b/test/cases/020_kernel/112_kmod_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/200_namespace/common.yml b/test/cases/020_kernel/200_namespace/common.yml index 34c11e9a9e..81579ddb3e 100644 --- a/test/cases/020_kernel/200_namespace/common.yml +++ b/test/cases/020_kernel/200_namespace/common.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 trust: org: diff --git a/test/cases/030_security/000_docker-bench/test.yml b/test/cases/030_security/000_docker-bench/test.yml index 769b27ffef..678a0a6021 100644 --- a/test/cases/030_security/000_docker-bench/test.yml +++ b/test/cases/030_security/000_docker-bench/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/030_security/010_ports/test.yml b/test/cases/030_security/010_ports/test.yml index 2250a9b324..30151f5ab7 100644 --- a/test/cases/030_security/010_ports/test.yml +++ b/test/cases/030_security/010_ports/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: test diff --git a/test/cases/040_packages/002_binfmt/test.yml b/test/cases/040_packages/002_binfmt/test.yml index 1899a86e55..3c120c60d0 100644 --- a/test/cases/040_packages/002_binfmt/test.yml +++ b/test/cases/040_packages/002_binfmt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: binfmt diff --git a/test/cases/040_packages/002_bpftrace/test.yml b/test/cases/040_packages/002_bpftrace/test.yml index d5f4d5764b..ac5c81f8c7 100644 --- a/test/cases/040_packages/002_bpftrace/test.yml +++ b/test/cases/040_packages/002_bpftrace/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/bpftrace:v0.8 onboot: diff --git a/test/cases/040_packages/003_ca-certificates/test.yml b/test/cases/040_packages/003_ca-certificates/test.yml index 4a4d1717f4..a3c72cf27a 100644 --- a/test/cases/040_packages/003_ca-certificates/test.yml +++ b/test/cases/040_packages/003_ca-certificates/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/ca-certificates:v0.8 onboot: diff --git a/test/cases/040_packages/003_containerd/test.yml b/test/cases/040_packages/003_containerd/test.yml index e0fff2fb43..6a3ac00a70 100644 --- a/test/cases/040_packages/003_containerd/test.yml +++ b/test/cases/040_packages/003_containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/004_dhcpcd/test.yml b/test/cases/040_packages/004_dhcpcd/test.yml index 47ccd79cce..61f620b71c 100644 --- a/test/cases/040_packages/004_dhcpcd/test.yml +++ b/test/cases/040_packages/004_dhcpcd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml index fe1e95efff..1f5cb131d6 100644 --- a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml +++ b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml index 69c764e759..b4a73daf98 100644 --- a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml +++ b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/002_key/test.yml b/test/cases/040_packages/004_dm-crypt/002_key/test.yml index b68b9873b1..5313a248ee 100644 --- a/test/cases/040_packages/004_dm-crypt/002_key/test.yml +++ b/test/cases/040_packages/004_dm-crypt/002_key/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/005_extend/000_ext4/test-create.yml b/test/cases/040_packages/005_extend/000_ext4/test-create.yml index 26f8a0c1fb..a30aa1bb7c 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test-create.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/000_ext4/test.yml b/test/cases/040_packages/005_extend/000_ext4/test.yml index 31b285bc14..f7c20330f0 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml index 14609961b0..fb44cfed5c 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/001_btrfs/test.yml b/test/cases/040_packages/005_extend/001_btrfs/test.yml index 7da3d03d0b..c3b6caa2ce 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/002_xfs/test-create.yml b/test/cases/040_packages/005_extend/002_xfs/test-create.yml index ebc242f08e..1bf94fb08d 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test-create.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/002_xfs/test.yml b/test/cases/040_packages/005_extend/002_xfs/test.yml index 598ee6dbf4..f197eaa438 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/003_gpt/test-create.yml b/test/cases/040_packages/005_extend/003_gpt/test-create.yml index 82ce094b2c..c95adfdca1 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test-create.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/003_gpt/test.yml b/test/cases/040_packages/005_extend/003_gpt/test.yml index 31b285bc14..f7c20330f0 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/006_format_mount/000_auto/test.yml b/test/cases/040_packages/006_format_mount/000_auto/test.yml index ca0633de2e..52d1d64000 100644 --- a/test/cases/040_packages/006_format_mount/000_auto/test.yml +++ b/test/cases/040_packages/006_format_mount/000_auto/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/001_by_label/test.yml b/test/cases/040_packages/006_format_mount/001_by_label/test.yml index 5d4de6ffae..d9b78fa331 100644 --- a/test/cases/040_packages/006_format_mount/001_by_label/test.yml +++ b/test/cases/040_packages/006_format_mount/001_by_label/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in index 79c99de2b0..b4a24dba26 100644 --- a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in +++ b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml index b86a594ac8..9e6a4f267e 100644 --- a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml +++ b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/006_format_mount/004_xfs/test.yml b/test/cases/040_packages/006_format_mount/004_xfs/test.yml index d4afbb5e37..a1489ca388 100644 --- a/test/cases/040_packages/006_format_mount/004_xfs/test.yml +++ b/test/cases/040_packages/006_format_mount/004_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml index 1c2aaa3741..e525994eb2 100644 --- a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml +++ b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/006_gpt/test.yml b/test/cases/040_packages/006_format_mount/006_gpt/test.yml index c69129b71a..c34a338302 100644 --- a/test/cases/040_packages/006_format_mount/006_gpt/test.yml +++ b/test/cases/040_packages/006_format_mount/006_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/010_multiple/test.yml b/test/cases/040_packages/006_format_mount/010_multiple/test.yml index 96937c01b5..75d14907c6 100644 --- a/test/cases/040_packages/006_format_mount/010_multiple/test.yml +++ b/test/cases/040_packages/006_format_mount/010_multiple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/007_getty-containerd/test.yml b/test/cases/040_packages/007_getty-containerd/test.yml index a28500aef2..34bd849139 100644 --- a/test/cases/040_packages/007_getty-containerd/test.yml +++ b/test/cases/040_packages/007_getty-containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/008_metadata/000_cidata/test.yml b/test/cases/040_packages/008_metadata/000_cidata/test.yml index f0205fca4b..9cbd081d47 100644 --- a/test/cases/040_packages/008_metadata/000_cidata/test.yml +++ b/test/cases/040_packages/008_metadata/000_cidata/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: metadata diff --git a/test/cases/040_packages/012_losetup/test.yml b/test/cases/040_packages/012_losetup/test.yml index db2d54fd56..27182ebff4 100644 --- a/test/cases/040_packages/012_losetup/test.yml +++ b/test/cases/040_packages/012_losetup/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: losetup diff --git a/test/cases/040_packages/013_mkimage/mkimage.yml b/test/cases/040_packages/013_mkimage/mkimage.yml index 2f65381008..1186646176 100644 --- a/test/cases/040_packages/013_mkimage/mkimage.yml +++ b/test/cases/040_packages/013_mkimage/mkimage.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/040_packages/013_mkimage/run.yml b/test/cases/040_packages/013_mkimage/run.yml index 6d9c247351..fc49df8e63 100644 --- a/test/cases/040_packages/013_mkimage/run.yml +++ b/test/cases/040_packages/013_mkimage/run.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/040_packages/019_sysctl/test.yml b/test/cases/040_packages/019_sysctl/test.yml index 47012071c6..99a70755ae 100644 --- a/test/cases/040_packages/019_sysctl/test.yml +++ b/test/cases/040_packages/019_sysctl/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: sysctl diff --git a/test/cases/040_packages/023_wireguard/test.yml b/test/cases/040_packages/023_wireguard/test.yml index 86c471ef76..ee8ba8b4e7 100644 --- a/test/cases/040_packages/023_wireguard/test.yml +++ b/test/cases/040_packages/023_wireguard/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/030_logwrite/test.yml b/test/cases/040_packages/030_logwrite/test.yml index 47e42159a9..7055590030 100644 --- a/test/cases/040_packages/030_logwrite/test.yml +++ b/test/cases/040_packages/030_logwrite/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/031_kmsg/test.yml b/test/cases/040_packages/031_kmsg/test.yml index 5d257a24ba..23575c380a 100644 --- a/test/cases/040_packages/031_kmsg/test.yml +++ b/test/cases/040_packages/031_kmsg/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/032_bcc/test.yml b/test/cases/040_packages/032_bcc/test.yml index ce28645842..811c246323 100644 --- a/test/cases/040_packages/032_bcc/test.yml +++ b/test/cases/040_packages/032_bcc/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/kernel-bcc:5.4.39 onboot: diff --git a/test/hack/test-ltp.yml b/test/hack/test-ltp.yml index 22aa093fe2..6599afa5cf 100644 --- a/test/hack/test-ltp.yml +++ b/test/hack/test-ltp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/hack/test.yml b/test/hack/test.yml index 854e31aa9d..caa11e5af3 100644 --- a/test/hack/test.yml +++ b/test/hack/test.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/pkg/ns/template.yml b/test/pkg/ns/template.yml index 00f0b29a2a..f9a5f817fa 100644 --- a/test/pkg/ns/template.yml +++ b/test/pkg/ns/template.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:9415d6bba5ca440e4f526b51c1d4cae51eefcdde + - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a - linuxkit/runc:v0.8 onboot: - name: test-ns From 2d16769965a63882050e1de236d431808f48e592 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Tue, 20 Oct 2020 18:40:10 +0300 Subject: [PATCH 15/20] multiple containerd options Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- docs/faq.md | 35 +- pkg/init/cmd/service/system_init.go | 57 +- pkg/init/cmd/service/vendor.conf | 1 + .../github.com/pelletier/go-toml/LICENSE | 21 + .../github.com/pelletier/go-toml/README.md | 151 ++ .../github.com/pelletier/go-toml/doc.go | 23 + .../github.com/pelletier/go-toml/fuzz.go | 31 + .../github.com/pelletier/go-toml/go.mod | 5 + .../pelletier/go-toml/keysparsing.go | 112 ++ .../github.com/pelletier/go-toml/lexer.go | 1031 +++++++++++++ .../github.com/pelletier/go-toml/localtime.go | 281 ++++ .../github.com/pelletier/go-toml/marshal.go | 1279 +++++++++++++++++ .../github.com/pelletier/go-toml/parser.go | 508 +++++++ .../github.com/pelletier/go-toml/position.go | 29 + .../github.com/pelletier/go-toml/token.go | 136 ++ .../github.com/pelletier/go-toml/toml.go | 529 +++++++ .../pelletier/go-toml/tomltree_create.go | 155 ++ .../pelletier/go-toml/tomltree_write.go | 517 +++++++ .../020_init_containerd/runtime-config.toml | 3 + .../040_packages/020_init_containerd/test.yml | 6 +- 20 files changed, 4897 insertions(+), 13 deletions(-) create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/LICENSE create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/README.md create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/doc.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/fuzz.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/go.mod create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/keysparsing.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/lexer.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/localtime.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/marshal.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/parser.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/position.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/token.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/toml.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_create.go create mode 100644 pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_write.go create mode 100644 test/cases/040_packages/020_init_containerd/runtime-config.toml diff --git a/docs/faq.md b/docs/faq.md index 0c1f9e08e1..16c3d6aadb 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -6,7 +6,7 @@ Please open an issue if you want to add a question here. LinuxKit does not require being installed on a disk, it is often run from an ISO, PXE or other such means, so it does not require an on disk upgrade method such as the ChromeOS code that -is often used. It would definitely be possible to use that type of upgrade method if the +is often used. It would definitely be possible to use that type of upgrade method if the system is installed, and it would be useful to support this for that use case, and an updater container to control this for people who want to use this. @@ -37,18 +37,41 @@ If you're not seeing `containerd` logs in the console during boot, make sure tha `init` and other processes like `containerd` will use the last defined console in the kernel `cmdline`. When using `qemu`, to see the console you need to list `ttyS0` as the last console to properly see the output. -## Enabling debug or trace log levels on containerd +## Enabling and controlling containerd logs -On startup, linuxkit looks for and parses a file `/etc/containerd/cli-opts`. If it exists, the content is used as arguments to containerd. Thus, to enable +On startup, linuxkit looks for and parses a file `/etc/containerd/runtime-config.toml`. If it exists, the content is used to configure containerd runtime. + +Sample config is below: + +```toml +cliopts="--log-level debug" +stderr="/var/log/containerd.out.log" +stdout="stdout" +``` + +The options are as follows: + +* `cliopts`: options to pass to the containerd command-line as is. +* `stderr`: where to send stderr from containerd. If blank, it sends it to the default stderr, which is the console. +* `stdout`: where to send stdout from containerd. If blank, it sends it to the default stdout, which is the console. containerd normally does not have any stdout. + +The `stderr` and `stdout` options can take exactly one of the following options: + +* `stderr` - send to stderr +* `stdout` - send to stdout +* any absolute path (beginning with `/`) - send to that file. If the file exists, append to it; if not, create it and append to it. + +Thus, to enable a higher log level, for example `debug`, create a file whose contents are `--log-level debug` and place it on the image: ```yml files: - - path: /etc/containerd/cli-opts - contents: "--log-level debug" + - path: /etc/containerd/runtime-config.toml + source: "/path/to/runtime-config.toml" + mode: "0644" ``` -Note that the package that parses the contents splits on _all_ whitespace. It does not, as of this writing, support shell-like parsing, so the following will work: +Note that the package that parses the `cliopts` splits on _all_ whitespace. It does not, as of this writing, support shell-like parsing, so the following will work: ``` --log-level debug --arg abcd diff --git a/pkg/init/cmd/service/system_init.go b/pkg/init/cmd/service/system_init.go index 58a4045247..7081fc6bca 100644 --- a/pkg/init/cmd/service/system_init.go +++ b/pkg/init/cmd/service/system_init.go @@ -4,6 +4,7 @@ import ( "context" "flag" "fmt" + "io" "io/ioutil" "os" "os/exec" @@ -14,12 +15,13 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/errdefs" + "github.com/pelletier/go-toml" "github.com/pkg/errors" log "github.com/sirupsen/logrus" ) const ( - containerdOptsFile = "/etc/containerd/cli-opts" + containerdOptsFile = "/etc/containerd/runtime-config.toml" ) func cleanupTask(ctx context.Context, ctr containerd.Container) error { @@ -85,14 +87,43 @@ func systemInitCmd(ctx context.Context, args []string) { // look for containerd options ctrdArgs := []string{} + var ( + stderr io.Writer = os.Stderr + stdout io.Writer = os.Stdout + ) if b, err := ioutil.ReadFile(containerdOptsFile); err == nil { - ctrdArgs = strings.Fields(string(b)) + config, err := toml.LoadBytes(b) + if err != nil { + log.Fatalf("error reading toml file %s: %v", containerdOptsFile, err) + } + if config != nil { + // did we have any CLI opts? + cliOptsLine := config.Get("cliopts") + if cliOptsLine != nil { + ctrdArgs = strings.Fields(cliOptsLine.(string)) + } + // stderr? + stderrLine := config.Get("stderr") + if stderrLine != nil { + stderr, err = getWriter(stderrLine.(string)) + if err != nil { + log.Fatal(err) + } + } + stdoutLine := config.Get("stdout") + if stdoutLine != nil { + stdout, err = getWriter(stdoutLine.(string)) + if err != nil { + log.Fatal(err) + } + } + } } // start up containerd cmd := exec.Command(*binary, ctrdArgs...) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr + cmd.Stdout = stdout + cmd.Stderr = stderr if err := cmd.Start(); err != nil { log.WithError(err).Fatal("cannot start containerd") } @@ -155,3 +186,21 @@ func systemInitCmd(ctx context.Context, args []string) { } } } + +func getWriter(line string) (io.Writer, error) { + switch { + case line == "stderr": + return os.Stderr, nil + case line == "stdout": + return os.Stdout, nil + case strings.HasPrefix(line, "/"): + // does the file exist? + f, err := os.OpenFile(line, + os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + return nil, fmt.Errorf("unable to open file %s for creation or appending: %v", line, err) + } + return f, nil + } + return nil, fmt.Errorf("invalid option for writer: %s", line) +} diff --git a/pkg/init/cmd/service/vendor.conf b/pkg/init/cmd/service/vendor.conf index fc1d219174..2847b4fa05 100644 --- a/pkg/init/cmd/service/vendor.conf +++ b/pkg/init/cmd/service/vendor.conf @@ -1,2 +1,3 @@ github.com/vishvananda/netlink f5a6f697a596c788d474984a38a0ac4ba0719e93 github.com/vishvananda/netns 86bef332bfc3b59b7624a600bd53009ce91a9829 +github.com/pelletier/go-toml 5b4e7e5dcc567bbc53b25ad81e06493ede66d301 diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/LICENSE b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/LICENSE new file mode 100644 index 0000000000..583bdae628 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/README.md b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/README.md new file mode 100644 index 0000000000..c72277c3fa --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/README.md @@ -0,0 +1,151 @@ +# go-toml + +Go library for the [TOML](https://toml.io/) format. + +This library supports TOML version +[v1.0.0-rc.3](https://toml.io/en/v1.0.0-rc.3) + +[![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml) +[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE) +[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master) +[![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml) +[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml) +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield) + +## Features + +Go-toml provides the following features for using data parsed from TOML documents: + +* Load TOML documents from files and string data +* Easily navigate TOML structure using Tree +* Marshaling and unmarshaling to and from data structures +* Line & column position data for all parsed elements +* [Query support similar to JSON-Path](query/) +* Syntax errors contain line and column numbers + +## Import + +```go +import "github.com/pelletier/go-toml" +``` + +## Usage example + +Read a TOML document: + +```go +config, _ := toml.Load(` +[postgres] +user = "pelletier" +password = "mypassword"`) +// retrieve data directly +user := config.Get("postgres.user").(string) + +// or using an intermediate object +postgresConfig := config.Get("postgres").(*toml.Tree) +password := postgresConfig.Get("password").(string) +``` + +Or use Unmarshal: + +```go +type Postgres struct { + User string + Password string +} +type Config struct { + Postgres Postgres +} + +doc := []byte(` +[Postgres] +User = "pelletier" +Password = "mypassword"`) + +config := Config{} +toml.Unmarshal(doc, &config) +fmt.Println("user=", config.Postgres.User) +``` + +Or use a query: + +```go +// use a query to gather elements without walking the tree +q, _ := query.Compile("$..[user,password]") +results := q.Execute(config) +for ii, item := range results.Values() { + fmt.Printf("Query result %d: %v\n", ii, item) +} +``` + +## Documentation + +The documentation and additional examples are available at +[godoc.org](http://godoc.org/github.com/pelletier/go-toml). + +## Tools + +Go-toml provides two handy command line tools: + +* `tomll`: Reads TOML files and lints them. + + ``` + go install github.com/pelletier/go-toml/cmd/tomll + tomll --help + ``` +* `tomljson`: Reads a TOML file and outputs its JSON representation. + + ``` + go install github.com/pelletier/go-toml/cmd/tomljson + tomljson --help + ``` + + * `jsontoml`: Reads a JSON file and outputs a TOML representation. + + ``` + go install github.com/pelletier/go-toml/cmd/jsontoml + jsontoml --help + ``` + +### Docker image + +Those tools are also availble as a Docker image from +[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to +use `tomljson`: + +``` +docker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml +``` + +Only master (`latest`) and tagged versions are published to dockerhub. You +can build your own image as usual: + +``` +docker build -t go-toml . +``` + +## Contribute + +Feel free to report bugs and patches using GitHub's pull requests system on +[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be +much appreciated! + +### Run tests + +`go test ./...` + +### Fuzzing + +The script `./fuzz.sh` is available to +run [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml. + +## Versioning + +Go-toml follows [Semantic Versioning](http://semver.org/). The supported version +of [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of +this document. The last two major versions of Go are supported +(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)). + +## License + +The MIT License (MIT). Read [LICENSE](LICENSE). diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/doc.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/doc.go new file mode 100644 index 0000000000..a1406a32b3 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/doc.go @@ -0,0 +1,23 @@ +// Package toml is a TOML parser and manipulation library. +// +// This version supports the specification as described in +// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md +// +// Marshaling +// +// Go-toml can marshal and unmarshal TOML documents from and to data +// structures. +// +// TOML document as a tree +// +// Go-toml can operate on a TOML document as a tree. Use one of the Load* +// functions to parse TOML data and obtain a Tree instance, then one of its +// methods to manipulate the tree. +// +// JSONPath-like queries +// +// The package github.com/pelletier/go-toml/query implements a system +// similar to JSONPath to quickly retrieve elements of a TOML document using a +// single expression. See the package documentation for more information. +// +package toml diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/fuzz.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/fuzz.go new file mode 100644 index 0000000000..14570c8d35 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/fuzz.go @@ -0,0 +1,31 @@ +// +build gofuzz + +package toml + +func Fuzz(data []byte) int { + tree, err := LoadBytes(data) + if err != nil { + if tree != nil { + panic("tree must be nil if there is an error") + } + return 0 + } + + str, err := tree.ToTomlString() + if err != nil { + if str != "" { + panic(`str must be "" if there is an error`) + } + panic(err) + } + + tree, err = Load(str) + if err != nil { + if tree != nil { + panic("tree must be nil if there is an error") + } + return 0 + } + + return 1 +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/go.mod b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/go.mod new file mode 100644 index 0000000000..e924cb90c0 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/go.mod @@ -0,0 +1,5 @@ +module github.com/pelletier/go-toml + +go 1.12 + +require github.com/davecgh/go-spew v1.1.1 diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/keysparsing.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/keysparsing.go new file mode 100644 index 0000000000..e091500b24 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/keysparsing.go @@ -0,0 +1,112 @@ +// Parsing keys handling both bare and quoted keys. + +package toml + +import ( + "errors" + "fmt" +) + +// Convert the bare key group string to an array. +// The input supports double quotation and single quotation, +// but escape sequences are not supported. Lexers must unescape them beforehand. +func parseKey(key string) ([]string, error) { + runes := []rune(key) + var groups []string + + if len(key) == 0 { + return nil, errors.New("empty key") + } + + idx := 0 + for idx < len(runes) { + for ; idx < len(runes) && isSpace(runes[idx]); idx++ { + // skip leading whitespace + } + if idx >= len(runes) { + break + } + r := runes[idx] + if isValidBareChar(r) { + // parse bare key + startIdx := idx + endIdx := -1 + idx++ + for idx < len(runes) { + r = runes[idx] + if isValidBareChar(r) { + idx++ + } else if r == '.' { + endIdx = idx + break + } else if isSpace(r) { + endIdx = idx + for ; idx < len(runes) && isSpace(runes[idx]); idx++ { + // skip trailing whitespace + } + if idx < len(runes) && runes[idx] != '.' { + return nil, fmt.Errorf("invalid key character after whitespace: %c", runes[idx]) + } + break + } else { + return nil, fmt.Errorf("invalid bare key character: %c", r) + } + } + if endIdx == -1 { + endIdx = idx + } + groups = append(groups, string(runes[startIdx:endIdx])) + } else if r == '\'' { + // parse single quoted key + idx++ + startIdx := idx + for { + if idx >= len(runes) { + return nil, fmt.Errorf("unclosed single-quoted key") + } + r = runes[idx] + if r == '\'' { + groups = append(groups, string(runes[startIdx:idx])) + idx++ + break + } + idx++ + } + } else if r == '"' { + // parse double quoted key + idx++ + startIdx := idx + for { + if idx >= len(runes) { + return nil, fmt.Errorf("unclosed double-quoted key") + } + r = runes[idx] + if r == '"' { + groups = append(groups, string(runes[startIdx:idx])) + idx++ + break + } + idx++ + } + } else if r == '.' { + idx++ + if idx >= len(runes) { + return nil, fmt.Errorf("unexpected end of key") + } + r = runes[idx] + if !isValidBareChar(r) && r != '\'' && r != '"' && r != ' ' { + return nil, fmt.Errorf("expecting key part after dot") + } + } else { + return nil, fmt.Errorf("invalid key character: %c", r) + } + } + if len(groups) == 0 { + return nil, fmt.Errorf("empty key") + } + return groups, nil +} + +func isValidBareChar(r rune) bool { + return isAlphanumeric(r) || r == '-' || isDigit(r) +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/lexer.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/lexer.go new file mode 100644 index 0000000000..313908e3e0 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/lexer.go @@ -0,0 +1,1031 @@ +// TOML lexer. +// +// Written using the principles developed by Rob Pike in +// http://www.youtube.com/watch?v=HxaD_trXwRE + +package toml + +import ( + "bytes" + "errors" + "fmt" + "strconv" + "strings" +) + +// Define state functions +type tomlLexStateFn func() tomlLexStateFn + +// Define lexer +type tomlLexer struct { + inputIdx int + input []rune // Textual source + currentTokenStart int + currentTokenStop int + tokens []token + brackets []rune + line int + col int + endbufferLine int + endbufferCol int +} + +// Basic read operations on input + +func (l *tomlLexer) read() rune { + r := l.peek() + if r == '\n' { + l.endbufferLine++ + l.endbufferCol = 1 + } else { + l.endbufferCol++ + } + l.inputIdx++ + return r +} + +func (l *tomlLexer) next() rune { + r := l.read() + + if r != eof { + l.currentTokenStop++ + } + return r +} + +func (l *tomlLexer) ignore() { + l.currentTokenStart = l.currentTokenStop + l.line = l.endbufferLine + l.col = l.endbufferCol +} + +func (l *tomlLexer) skip() { + l.next() + l.ignore() +} + +func (l *tomlLexer) fastForward(n int) { + for i := 0; i < n; i++ { + l.next() + } +} + +func (l *tomlLexer) emitWithValue(t tokenType, value string) { + l.tokens = append(l.tokens, token{ + Position: Position{l.line, l.col}, + typ: t, + val: value, + }) + l.ignore() +} + +func (l *tomlLexer) emit(t tokenType) { + l.emitWithValue(t, string(l.input[l.currentTokenStart:l.currentTokenStop])) +} + +func (l *tomlLexer) peek() rune { + if l.inputIdx >= len(l.input) { + return eof + } + return l.input[l.inputIdx] +} + +func (l *tomlLexer) peekString(size int) string { + maxIdx := len(l.input) + upperIdx := l.inputIdx + size // FIXME: potential overflow + if upperIdx > maxIdx { + upperIdx = maxIdx + } + return string(l.input[l.inputIdx:upperIdx]) +} + +func (l *tomlLexer) follow(next string) bool { + return next == l.peekString(len(next)) +} + +// Error management + +func (l *tomlLexer) errorf(format string, args ...interface{}) tomlLexStateFn { + l.tokens = append(l.tokens, token{ + Position: Position{l.line, l.col}, + typ: tokenError, + val: fmt.Sprintf(format, args...), + }) + return nil +} + +// State functions + +func (l *tomlLexer) lexVoid() tomlLexStateFn { + for { + next := l.peek() + switch next { + case '}': // after '{' + return l.lexRightCurlyBrace + case '[': + return l.lexTableKey + case '#': + return l.lexComment(l.lexVoid) + case '=': + return l.lexEqual + case '\r': + fallthrough + case '\n': + l.skip() + continue + } + + if isSpace(next) { + l.skip() + } + + if isKeyStartChar(next) { + return l.lexKey + } + + if next == eof { + l.next() + break + } + } + + l.emit(tokenEOF) + return nil +} + +func (l *tomlLexer) lexRvalue() tomlLexStateFn { + for { + next := l.peek() + switch next { + case '.': + return l.errorf("cannot start float with a dot") + case '=': + return l.lexEqual + case '[': + return l.lexLeftBracket + case ']': + return l.lexRightBracket + case '{': + return l.lexLeftCurlyBrace + case '}': + return l.lexRightCurlyBrace + case '#': + return l.lexComment(l.lexRvalue) + case '"': + return l.lexString + case '\'': + return l.lexLiteralString + case ',': + return l.lexComma + case '\r': + fallthrough + case '\n': + l.skip() + if len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '[' { + return l.lexRvalue + } + return l.lexVoid + } + + if l.follow("true") { + return l.lexTrue + } + + if l.follow("false") { + return l.lexFalse + } + + if l.follow("inf") { + return l.lexInf + } + + if l.follow("nan") { + return l.lexNan + } + + if isSpace(next) { + l.skip() + continue + } + + if next == eof { + l.next() + break + } + + if next == '+' || next == '-' { + return l.lexNumber + } + + if isDigit(next) { + return l.lexDateTimeOrNumber + } + + return l.errorf("no value can start with %c", next) + } + + l.emit(tokenEOF) + return nil +} + +func (l *tomlLexer) lexDateTimeOrNumber() tomlLexStateFn { + // Could be either a date/time, or a digit. + // The options for date/times are: + // YYYY-... => date or date-time + // HH:... => time + // Anything else should be a number. + + lookAhead := l.peekString(5) + if len(lookAhead) < 3 { + return l.lexNumber() + } + + for idx, r := range lookAhead { + if !isDigit(r) { + if idx == 2 && r == ':' { + return l.lexDateTimeOrTime() + } + if idx == 4 && r == '-' { + return l.lexDateTimeOrTime() + } + return l.lexNumber() + } + } + return l.lexNumber() +} + +func (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn { + l.next() + l.emit(tokenLeftCurlyBrace) + l.brackets = append(l.brackets, '{') + return l.lexVoid +} + +func (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn { + l.next() + l.emit(tokenRightCurlyBrace) + if len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '{' { + return l.errorf("cannot have '}' here") + } + l.brackets = l.brackets[:len(l.brackets)-1] + return l.lexRvalue +} + +func (l *tomlLexer) lexDateTimeOrTime() tomlLexStateFn { + // Example matches: + // 1979-05-27T07:32:00Z + // 1979-05-27T00:32:00-07:00 + // 1979-05-27T00:32:00.999999-07:00 + // 1979-05-27 07:32:00Z + // 1979-05-27 00:32:00-07:00 + // 1979-05-27 00:32:00.999999-07:00 + // 1979-05-27T07:32:00 + // 1979-05-27T00:32:00.999999 + // 1979-05-27 07:32:00 + // 1979-05-27 00:32:00.999999 + // 1979-05-27 + // 07:32:00 + // 00:32:00.999999 + + // we already know those two are digits + l.next() + l.next() + + // Got 2 digits. At that point it could be either a time or a date(-time). + + r := l.next() + if r == ':' { + return l.lexTime() + } + + return l.lexDateTime() +} + +func (l *tomlLexer) lexDateTime() tomlLexStateFn { + // This state accepts an offset date-time, a local date-time, or a local date. + // + // v--- cursor + // 1979-05-27T07:32:00Z + // 1979-05-27T00:32:00-07:00 + // 1979-05-27T00:32:00.999999-07:00 + // 1979-05-27 07:32:00Z + // 1979-05-27 00:32:00-07:00 + // 1979-05-27 00:32:00.999999-07:00 + // 1979-05-27T07:32:00 + // 1979-05-27T00:32:00.999999 + // 1979-05-27 07:32:00 + // 1979-05-27 00:32:00.999999 + // 1979-05-27 + + // date + + // already checked by lexRvalue + l.next() // digit + l.next() // - + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid month digit in date: %c", r) + } + } + + r := l.next() + if r != '-' { + return l.errorf("expected - to separate month of a date, not %c", r) + } + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid day digit in date: %c", r) + } + } + + l.emit(tokenLocalDate) + + r = l.peek() + + if r == eof { + + return l.lexRvalue + } + + if r != ' ' && r != 'T' { + return l.errorf("incorrect date/time separation character: %c", r) + } + + if r == ' ' { + lookAhead := l.peekString(3)[1:] + if len(lookAhead) < 2 { + return l.lexRvalue + } + for _, r := range lookAhead { + if !isDigit(r) { + return l.lexRvalue + } + } + } + + l.skip() // skip the T or ' ' + + // time + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid hour digit in time: %c", r) + } + } + + r = l.next() + if r != ':' { + return l.errorf("time hour/minute separator should be :, not %c", r) + } + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid minute digit in time: %c", r) + } + } + + r = l.next() + if r != ':' { + return l.errorf("time minute/second separator should be :, not %c", r) + } + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid second digit in time: %c", r) + } + } + + r = l.peek() + if r == '.' { + l.next() + r := l.next() + if !isDigit(r) { + return l.errorf("expected at least one digit in time's fraction, not %c", r) + } + + for { + r := l.peek() + if !isDigit(r) { + break + } + l.next() + } + } + + l.emit(tokenLocalTime) + + return l.lexTimeOffset + +} + +func (l *tomlLexer) lexTimeOffset() tomlLexStateFn { + // potential offset + + // Z + // -07:00 + // +07:00 + // nothing + + r := l.peek() + + if r == 'Z' { + l.next() + l.emit(tokenTimeOffset) + } else if r == '+' || r == '-' { + l.next() + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid hour digit in time offset: %c", r) + } + } + + r = l.next() + if r != ':' { + return l.errorf("time offset hour/minute separator should be :, not %c", r) + } + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid minute digit in time offset: %c", r) + } + } + + l.emit(tokenTimeOffset) + } + + return l.lexRvalue +} + +func (l *tomlLexer) lexTime() tomlLexStateFn { + // v--- cursor + // 07:32:00 + // 00:32:00.999999 + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid minute digit in time: %c", r) + } + } + + r := l.next() + if r != ':' { + return l.errorf("time minute/second separator should be :, not %c", r) + } + + for i := 0; i < 2; i++ { + r := l.next() + if !isDigit(r) { + return l.errorf("invalid second digit in time: %c", r) + } + } + + r = l.peek() + if r == '.' { + l.next() + r := l.next() + if !isDigit(r) { + return l.errorf("expected at least one digit in time's fraction, not %c", r) + } + + for { + r := l.peek() + if !isDigit(r) { + break + } + l.next() + } + } + + l.emit(tokenLocalTime) + return l.lexRvalue + +} + +func (l *tomlLexer) lexTrue() tomlLexStateFn { + l.fastForward(4) + l.emit(tokenTrue) + return l.lexRvalue +} + +func (l *tomlLexer) lexFalse() tomlLexStateFn { + l.fastForward(5) + l.emit(tokenFalse) + return l.lexRvalue +} + +func (l *tomlLexer) lexInf() tomlLexStateFn { + l.fastForward(3) + l.emit(tokenInf) + return l.lexRvalue +} + +func (l *tomlLexer) lexNan() tomlLexStateFn { + l.fastForward(3) + l.emit(tokenNan) + return l.lexRvalue +} + +func (l *tomlLexer) lexEqual() tomlLexStateFn { + l.next() + l.emit(tokenEqual) + return l.lexRvalue +} + +func (l *tomlLexer) lexComma() tomlLexStateFn { + l.next() + l.emit(tokenComma) + if len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '{' { + return l.lexVoid + } + return l.lexRvalue +} + +// Parse the key and emits its value without escape sequences. +// bare keys, basic string keys and literal string keys are supported. +func (l *tomlLexer) lexKey() tomlLexStateFn { + var sb strings.Builder + + for r := l.peek(); isKeyChar(r) || r == '\n' || r == '\r'; r = l.peek() { + if r == '"' { + l.next() + str, err := l.lexStringAsString(`"`, false, true) + if err != nil { + return l.errorf(err.Error()) + } + sb.WriteString("\"") + sb.WriteString(str) + sb.WriteString("\"") + l.next() + continue + } else if r == '\'' { + l.next() + str, err := l.lexLiteralStringAsString(`'`, false) + if err != nil { + return l.errorf(err.Error()) + } + sb.WriteString("'") + sb.WriteString(str) + sb.WriteString("'") + l.next() + continue + } else if r == '\n' { + return l.errorf("keys cannot contain new lines") + } else if isSpace(r) { + var str strings.Builder + str.WriteString(" ") + + // skip trailing whitespace + l.next() + for r = l.peek(); isSpace(r); r = l.peek() { + str.WriteRune(r) + l.next() + } + // break loop if not a dot + if r != '.' { + break + } + str.WriteString(".") + // skip trailing whitespace after dot + l.next() + for r = l.peek(); isSpace(r); r = l.peek() { + str.WriteRune(r) + l.next() + } + sb.WriteString(str.String()) + continue + } else if r == '.' { + // skip + } else if !isValidBareChar(r) { + return l.errorf("keys cannot contain %c character", r) + } + sb.WriteRune(r) + l.next() + } + l.emitWithValue(tokenKey, sb.String()) + return l.lexVoid +} + +func (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn { + return func() tomlLexStateFn { + for next := l.peek(); next != '\n' && next != eof; next = l.peek() { + if next == '\r' && l.follow("\r\n") { + break + } + l.next() + } + l.ignore() + return previousState + } +} + +func (l *tomlLexer) lexLeftBracket() tomlLexStateFn { + l.next() + l.emit(tokenLeftBracket) + l.brackets = append(l.brackets, '[') + return l.lexRvalue +} + +func (l *tomlLexer) lexLiteralStringAsString(terminator string, discardLeadingNewLine bool) (string, error) { + var sb strings.Builder + + if discardLeadingNewLine { + if l.follow("\r\n") { + l.skip() + l.skip() + } else if l.peek() == '\n' { + l.skip() + } + } + + // find end of string + for { + if l.follow(terminator) { + return sb.String(), nil + } + + next := l.peek() + if next == eof { + break + } + sb.WriteRune(l.next()) + } + + return "", errors.New("unclosed string") +} + +func (l *tomlLexer) lexLiteralString() tomlLexStateFn { + l.skip() + + // handle special case for triple-quote + terminator := "'" + discardLeadingNewLine := false + if l.follow("''") { + l.skip() + l.skip() + terminator = "'''" + discardLeadingNewLine = true + } + + str, err := l.lexLiteralStringAsString(terminator, discardLeadingNewLine) + if err != nil { + return l.errorf(err.Error()) + } + + l.emitWithValue(tokenString, str) + l.fastForward(len(terminator)) + l.ignore() + return l.lexRvalue +} + +// Lex a string and return the results as a string. +// Terminator is the substring indicating the end of the token. +// The resulting string does not include the terminator. +func (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, acceptNewLines bool) (string, error) { + var sb strings.Builder + + if discardLeadingNewLine { + if l.follow("\r\n") { + l.skip() + l.skip() + } else if l.peek() == '\n' { + l.skip() + } + } + + for { + if l.follow(terminator) { + return sb.String(), nil + } + + if l.follow("\\") { + l.next() + switch l.peek() { + case '\r': + fallthrough + case '\n': + fallthrough + case '\t': + fallthrough + case ' ': + // skip all whitespace chars following backslash + for strings.ContainsRune("\r\n\t ", l.peek()) { + l.next() + } + case '"': + sb.WriteString("\"") + l.next() + case 'n': + sb.WriteString("\n") + l.next() + case 'b': + sb.WriteString("\b") + l.next() + case 'f': + sb.WriteString("\f") + l.next() + case '/': + sb.WriteString("/") + l.next() + case 't': + sb.WriteString("\t") + l.next() + case 'r': + sb.WriteString("\r") + l.next() + case '\\': + sb.WriteString("\\") + l.next() + case 'u': + l.next() + var code strings.Builder + for i := 0; i < 4; i++ { + c := l.peek() + if !isHexDigit(c) { + return "", errors.New("unfinished unicode escape") + } + l.next() + code.WriteRune(c) + } + intcode, err := strconv.ParseInt(code.String(), 16, 32) + if err != nil { + return "", errors.New("invalid unicode escape: \\u" + code.String()) + } + sb.WriteRune(rune(intcode)) + case 'U': + l.next() + var code strings.Builder + for i := 0; i < 8; i++ { + c := l.peek() + if !isHexDigit(c) { + return "", errors.New("unfinished unicode escape") + } + l.next() + code.WriteRune(c) + } + intcode, err := strconv.ParseInt(code.String(), 16, 64) + if err != nil { + return "", errors.New("invalid unicode escape: \\U" + code.String()) + } + sb.WriteRune(rune(intcode)) + default: + return "", errors.New("invalid escape sequence: \\" + string(l.peek())) + } + } else { + r := l.peek() + + if 0x00 <= r && r <= 0x1F && r != '\t' && !(acceptNewLines && (r == '\n' || r == '\r')) { + return "", fmt.Errorf("unescaped control character %U", r) + } + l.next() + sb.WriteRune(r) + } + + if l.peek() == eof { + break + } + } + + return "", errors.New("unclosed string") +} + +func (l *tomlLexer) lexString() tomlLexStateFn { + l.skip() + + // handle special case for triple-quote + terminator := `"` + discardLeadingNewLine := false + acceptNewLines := false + if l.follow(`""`) { + l.skip() + l.skip() + terminator = `"""` + discardLeadingNewLine = true + acceptNewLines = true + } + + str, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines) + if err != nil { + return l.errorf(err.Error()) + } + + l.emitWithValue(tokenString, str) + l.fastForward(len(terminator)) + l.ignore() + return l.lexRvalue +} + +func (l *tomlLexer) lexTableKey() tomlLexStateFn { + l.next() + + if l.peek() == '[' { + // token '[[' signifies an array of tables + l.next() + l.emit(tokenDoubleLeftBracket) + return l.lexInsideTableArrayKey + } + // vanilla table key + l.emit(tokenLeftBracket) + return l.lexInsideTableKey +} + +// Parse the key till "]]", but only bare keys are supported +func (l *tomlLexer) lexInsideTableArrayKey() tomlLexStateFn { + for r := l.peek(); r != eof; r = l.peek() { + switch r { + case ']': + if l.currentTokenStop > l.currentTokenStart { + l.emit(tokenKeyGroupArray) + } + l.next() + if l.peek() != ']' { + break + } + l.next() + l.emit(tokenDoubleRightBracket) + return l.lexVoid + case '[': + return l.errorf("table array key cannot contain ']'") + default: + l.next() + } + } + return l.errorf("unclosed table array key") +} + +// Parse the key till "]" but only bare keys are supported +func (l *tomlLexer) lexInsideTableKey() tomlLexStateFn { + for r := l.peek(); r != eof; r = l.peek() { + switch r { + case ']': + if l.currentTokenStop > l.currentTokenStart { + l.emit(tokenKeyGroup) + } + l.next() + l.emit(tokenRightBracket) + return l.lexVoid + case '[': + return l.errorf("table key cannot contain ']'") + default: + l.next() + } + } + return l.errorf("unclosed table key") +} + +func (l *tomlLexer) lexRightBracket() tomlLexStateFn { + l.next() + l.emit(tokenRightBracket) + if len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '[' { + return l.errorf("cannot have ']' here") + } + l.brackets = l.brackets[:len(l.brackets)-1] + return l.lexRvalue +} + +type validRuneFn func(r rune) bool + +func isValidHexRune(r rune) bool { + return r >= 'a' && r <= 'f' || + r >= 'A' && r <= 'F' || + r >= '0' && r <= '9' || + r == '_' +} + +func isValidOctalRune(r rune) bool { + return r >= '0' && r <= '7' || r == '_' +} + +func isValidBinaryRune(r rune) bool { + return r == '0' || r == '1' || r == '_' +} + +func (l *tomlLexer) lexNumber() tomlLexStateFn { + r := l.peek() + + if r == '0' { + follow := l.peekString(2) + if len(follow) == 2 { + var isValidRune validRuneFn + switch follow[1] { + case 'x': + isValidRune = isValidHexRune + case 'o': + isValidRune = isValidOctalRune + case 'b': + isValidRune = isValidBinaryRune + default: + if follow[1] >= 'a' && follow[1] <= 'z' || follow[1] >= 'A' && follow[1] <= 'Z' { + return l.errorf("unknown number base: %s. possible options are x (hex) o (octal) b (binary)", string(follow[1])) + } + } + + if isValidRune != nil { + l.next() + l.next() + digitSeen := false + for { + next := l.peek() + if !isValidRune(next) { + break + } + digitSeen = true + l.next() + } + + if !digitSeen { + return l.errorf("number needs at least one digit") + } + + l.emit(tokenInteger) + + return l.lexRvalue + } + } + } + + if r == '+' || r == '-' { + l.next() + if l.follow("inf") { + return l.lexInf + } + if l.follow("nan") { + return l.lexNan + } + } + + pointSeen := false + expSeen := false + digitSeen := false + for { + next := l.peek() + if next == '.' { + if pointSeen { + return l.errorf("cannot have two dots in one float") + } + l.next() + if !isDigit(l.peek()) { + return l.errorf("float cannot end with a dot") + } + pointSeen = true + } else if next == 'e' || next == 'E' { + expSeen = true + l.next() + r := l.peek() + if r == '+' || r == '-' { + l.next() + } + } else if isDigit(next) { + digitSeen = true + l.next() + } else if next == '_' { + l.next() + } else { + break + } + if pointSeen && !digitSeen { + return l.errorf("cannot start float with a dot") + } + } + + if !digitSeen { + return l.errorf("no digit in that number") + } + if pointSeen || expSeen { + l.emit(tokenFloat) + } else { + l.emit(tokenInteger) + } + return l.lexRvalue +} + +func (l *tomlLexer) run() { + for state := l.lexVoid; state != nil; { + state = state() + } +} + +// Entry point +func lexToml(inputBytes []byte) []token { + runes := bytes.Runes(inputBytes) + l := &tomlLexer{ + input: runes, + tokens: make([]token, 0, 256), + line: 1, + col: 1, + endbufferLine: 1, + endbufferCol: 1, + } + l.run() + return l.tokens +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/localtime.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/localtime.go new file mode 100644 index 0000000000..a2149e9663 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/localtime.go @@ -0,0 +1,281 @@ +// Implementation of TOML's local date/time. +// Copied over from https://github.com/googleapis/google-cloud-go/blob/master/civil/civil.go +// to avoid pulling all the Google dependencies. +// +// Copyright 2016 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package civil implements types for civil time, a time-zone-independent +// representation of time that follows the rules of the proleptic +// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second +// minutes. +// +// Because they lack location information, these types do not represent unique +// moments or intervals of time. Use time.Time for that purpose. +package toml + +import ( + "fmt" + "time" +) + +// A LocalDate represents a date (year, month, day). +// +// This type does not include location information, and therefore does not +// describe a unique 24-hour timespan. +type LocalDate struct { + Year int // Year (e.g., 2014). + Month time.Month // Month of the year (January = 1, ...). + Day int // Day of the month, starting at 1. +} + +// LocalDateOf returns the LocalDate in which a time occurs in that time's location. +func LocalDateOf(t time.Time) LocalDate { + var d LocalDate + d.Year, d.Month, d.Day = t.Date() + return d +} + +// ParseLocalDate parses a string in RFC3339 full-date format and returns the date value it represents. +func ParseLocalDate(s string) (LocalDate, error) { + t, err := time.Parse("2006-01-02", s) + if err != nil { + return LocalDate{}, err + } + return LocalDateOf(t), nil +} + +// String returns the date in RFC3339 full-date format. +func (d LocalDate) String() string { + return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day) +} + +// IsValid reports whether the date is valid. +func (d LocalDate) IsValid() bool { + return LocalDateOf(d.In(time.UTC)) == d +} + +// In returns the time corresponding to time 00:00:00 of the date in the location. +// +// In is always consistent with time.LocalDate, even when time.LocalDate returns a time +// on a different day. For example, if loc is America/Indiana/Vincennes, then both +// time.LocalDate(1955, time.May, 1, 0, 0, 0, 0, loc) +// and +// civil.LocalDate{Year: 1955, Month: time.May, Day: 1}.In(loc) +// return 23:00:00 on April 30, 1955. +// +// In panics if loc is nil. +func (d LocalDate) In(loc *time.Location) time.Time { + return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc) +} + +// AddDays returns the date that is n days in the future. +// n can also be negative to go into the past. +func (d LocalDate) AddDays(n int) LocalDate { + return LocalDateOf(d.In(time.UTC).AddDate(0, 0, n)) +} + +// DaysSince returns the signed number of days between the date and s, not including the end day. +// This is the inverse operation to AddDays. +func (d LocalDate) DaysSince(s LocalDate) (days int) { + // We convert to Unix time so we do not have to worry about leap seconds: + // Unix time increases by exactly 86400 seconds per day. + deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix() + return int(deltaUnix / 86400) +} + +// Before reports whether d1 occurs before d2. +func (d1 LocalDate) Before(d2 LocalDate) bool { + if d1.Year != d2.Year { + return d1.Year < d2.Year + } + if d1.Month != d2.Month { + return d1.Month < d2.Month + } + return d1.Day < d2.Day +} + +// After reports whether d1 occurs after d2. +func (d1 LocalDate) After(d2 LocalDate) bool { + return d2.Before(d1) +} + +// MarshalText implements the encoding.TextMarshaler interface. +// The output is the result of d.String(). +func (d LocalDate) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +// The date is expected to be a string in a format accepted by ParseLocalDate. +func (d *LocalDate) UnmarshalText(data []byte) error { + var err error + *d, err = ParseLocalDate(string(data)) + return err +} + +// A LocalTime represents a time with nanosecond precision. +// +// This type does not include location information, and therefore does not +// describe a unique moment in time. +// +// This type exists to represent the TIME type in storage-based APIs like BigQuery. +// Most operations on Times are unlikely to be meaningful. Prefer the LocalDateTime type. +type LocalTime struct { + Hour int // The hour of the day in 24-hour format; range [0-23] + Minute int // The minute of the hour; range [0-59] + Second int // The second of the minute; range [0-59] + Nanosecond int // The nanosecond of the second; range [0-999999999] +} + +// LocalTimeOf returns the LocalTime representing the time of day in which a time occurs +// in that time's location. It ignores the date. +func LocalTimeOf(t time.Time) LocalTime { + var tm LocalTime + tm.Hour, tm.Minute, tm.Second = t.Clock() + tm.Nanosecond = t.Nanosecond() + return tm +} + +// ParseLocalTime parses a string and returns the time value it represents. +// ParseLocalTime accepts an extended form of the RFC3339 partial-time format. After +// the HH:MM:SS part of the string, an optional fractional part may appear, +// consisting of a decimal point followed by one to nine decimal digits. +// (RFC3339 admits only one digit after the decimal point). +func ParseLocalTime(s string) (LocalTime, error) { + t, err := time.Parse("15:04:05.999999999", s) + if err != nil { + return LocalTime{}, err + } + return LocalTimeOf(t), nil +} + +// String returns the date in the format described in ParseLocalTime. If Nanoseconds +// is zero, no fractional part will be generated. Otherwise, the result will +// end with a fractional part consisting of a decimal point and nine digits. +func (t LocalTime) String() string { + s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second) + if t.Nanosecond == 0 { + return s + } + return s + fmt.Sprintf(".%09d", t.Nanosecond) +} + +// IsValid reports whether the time is valid. +func (t LocalTime) IsValid() bool { + // Construct a non-zero time. + tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC) + return LocalTimeOf(tm) == t +} + +// MarshalText implements the encoding.TextMarshaler interface. +// The output is the result of t.String(). +func (t LocalTime) MarshalText() ([]byte, error) { + return []byte(t.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +// The time is expected to be a string in a format accepted by ParseLocalTime. +func (t *LocalTime) UnmarshalText(data []byte) error { + var err error + *t, err = ParseLocalTime(string(data)) + return err +} + +// A LocalDateTime represents a date and time. +// +// This type does not include location information, and therefore does not +// describe a unique moment in time. +type LocalDateTime struct { + Date LocalDate + Time LocalTime +} + +// Note: We deliberately do not embed LocalDate into LocalDateTime, to avoid promoting AddDays and Sub. + +// LocalDateTimeOf returns the LocalDateTime in which a time occurs in that time's location. +func LocalDateTimeOf(t time.Time) LocalDateTime { + return LocalDateTime{ + Date: LocalDateOf(t), + Time: LocalTimeOf(t), + } +} + +// ParseLocalDateTime parses a string and returns the LocalDateTime it represents. +// ParseLocalDateTime accepts a variant of the RFC3339 date-time format that omits +// the time offset but includes an optional fractional time, as described in +// ParseLocalTime. Informally, the accepted format is +// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF] +// where the 'T' may be a lower-case 't'. +func ParseLocalDateTime(s string) (LocalDateTime, error) { + t, err := time.Parse("2006-01-02T15:04:05.999999999", s) + if err != nil { + t, err = time.Parse("2006-01-02t15:04:05.999999999", s) + if err != nil { + return LocalDateTime{}, err + } + } + return LocalDateTimeOf(t), nil +} + +// String returns the date in the format described in ParseLocalDate. +func (dt LocalDateTime) String() string { + return dt.Date.String() + "T" + dt.Time.String() +} + +// IsValid reports whether the datetime is valid. +func (dt LocalDateTime) IsValid() bool { + return dt.Date.IsValid() && dt.Time.IsValid() +} + +// In returns the time corresponding to the LocalDateTime in the given location. +// +// If the time is missing or ambigous at the location, In returns the same +// result as time.LocalDate. For example, if loc is America/Indiana/Vincennes, then +// both +// time.LocalDate(1955, time.May, 1, 0, 30, 0, 0, loc) +// and +// civil.LocalDateTime{ +// civil.LocalDate{Year: 1955, Month: time.May, Day: 1}}, +// civil.LocalTime{Minute: 30}}.In(loc) +// return 23:30:00 on April 30, 1955. +// +// In panics if loc is nil. +func (dt LocalDateTime) In(loc *time.Location) time.Time { + return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc) +} + +// Before reports whether dt1 occurs before dt2. +func (dt1 LocalDateTime) Before(dt2 LocalDateTime) bool { + return dt1.In(time.UTC).Before(dt2.In(time.UTC)) +} + +// After reports whether dt1 occurs after dt2. +func (dt1 LocalDateTime) After(dt2 LocalDateTime) bool { + return dt2.Before(dt1) +} + +// MarshalText implements the encoding.TextMarshaler interface. +// The output is the result of dt.String(). +func (dt LocalDateTime) MarshalText() ([]byte, error) { + return []byte(dt.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +// The datetime is expected to be a string in a format accepted by ParseLocalDateTime +func (dt *LocalDateTime) UnmarshalText(data []byte) error { + var err error + *dt, err = ParseLocalDateTime(string(data)) + return err +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/marshal.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/marshal.go new file mode 100644 index 0000000000..f8eba8a6b9 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/marshal.go @@ -0,0 +1,1279 @@ +package toml + +import ( + "bytes" + "encoding" + "errors" + "fmt" + "io" + "reflect" + "sort" + "strconv" + "strings" + "time" +) + +const ( + tagFieldName = "toml" + tagFieldComment = "comment" + tagCommented = "commented" + tagMultiline = "multiline" + tagDefault = "default" +) + +type tomlOpts struct { + name string + nameFromTag bool + comment string + commented bool + multiline bool + include bool + omitempty bool + defaultValue string +} + +type encOpts struct { + quoteMapKeys bool + arraysOneElementPerLine bool +} + +var encOptsDefaults = encOpts{ + quoteMapKeys: false, +} + +type annotation struct { + tag string + comment string + commented string + multiline string + defaultValue string +} + +var annotationDefault = annotation{ + tag: tagFieldName, + comment: tagFieldComment, + commented: tagCommented, + multiline: tagMultiline, + defaultValue: tagDefault, +} + +type marshalOrder int + +// Orders the Encoder can write the fields to the output stream. +const ( + // Sort fields alphabetically. + OrderAlphabetical marshalOrder = iota + 1 + // Preserve the order the fields are encountered. For example, the order of fields in + // a struct. + OrderPreserve +) + +var timeType = reflect.TypeOf(time.Time{}) +var marshalerType = reflect.TypeOf(new(Marshaler)).Elem() +var unmarshalerType = reflect.TypeOf(new(Unmarshaler)).Elem() +var textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem() +var textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem() +var localDateType = reflect.TypeOf(LocalDate{}) +var localTimeType = reflect.TypeOf(LocalTime{}) +var localDateTimeType = reflect.TypeOf(LocalDateTime{}) +var mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{}) + +// Check if the given marshal type maps to a Tree primitive +func isPrimitive(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isPrimitive(mtype.Elem()) + case reflect.Bool: + return true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return true + case reflect.Float32, reflect.Float64: + return true + case reflect.String: + return true + case reflect.Struct: + return isTimeType(mtype) + default: + return false + } +} + +func isTimeType(mtype reflect.Type) bool { + return mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType +} + +// Check if the given marshal type maps to a Tree slice or array +func isTreeSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isTreeSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return isTree(mtype.Elem()) + default: + return false + } +} + +// Check if the given marshal type maps to a slice or array of a custom marshaler type +func isCustomMarshalerSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isCustomMarshalerSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return isCustomMarshaler(mtype.Elem()) || isCustomMarshaler(reflect.New(mtype.Elem()).Type()) + default: + return false + } +} + +// Check if the given marshal type maps to a slice or array of a text marshaler type +func isTextMarshalerSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isTextMarshalerSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return isTextMarshaler(mtype.Elem()) || isTextMarshaler(reflect.New(mtype.Elem()).Type()) + default: + return false + } +} + +// Check if the given marshal type maps to a non-Tree slice or array +func isOtherSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isOtherSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return !isTreeSequence(mtype) + default: + return false + } +} + +// Check if the given marshal type maps to a Tree +func isTree(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isTree(mtype.Elem()) + case reflect.Map: + return true + case reflect.Struct: + return !isPrimitive(mtype) + default: + return false + } +} + +func isCustomMarshaler(mtype reflect.Type) bool { + return mtype.Implements(marshalerType) +} + +func callCustomMarshaler(mval reflect.Value) ([]byte, error) { + return mval.Interface().(Marshaler).MarshalTOML() +} + +func isTextMarshaler(mtype reflect.Type) bool { + return mtype.Implements(textMarshalerType) && !isTimeType(mtype) +} + +func callTextMarshaler(mval reflect.Value) ([]byte, error) { + return mval.Interface().(encoding.TextMarshaler).MarshalText() +} + +func isCustomUnmarshaler(mtype reflect.Type) bool { + return mtype.Implements(unmarshalerType) +} + +func callCustomUnmarshaler(mval reflect.Value, tval interface{}) error { + return mval.Interface().(Unmarshaler).UnmarshalTOML(tval) +} + +func isTextUnmarshaler(mtype reflect.Type) bool { + return mtype.Implements(textUnmarshalerType) +} + +func callTextUnmarshaler(mval reflect.Value, text []byte) error { + return mval.Interface().(encoding.TextUnmarshaler).UnmarshalText(text) +} + +// Marshaler is the interface implemented by types that +// can marshal themselves into valid TOML. +type Marshaler interface { + MarshalTOML() ([]byte, error) +} + +// Unmarshaler is the interface implemented by types that +// can unmarshal a TOML description of themselves. +type Unmarshaler interface { + UnmarshalTOML(interface{}) error +} + +/* +Marshal returns the TOML encoding of v. Behavior is similar to the Go json +encoder, except that there is no concept of a Marshaler interface or MarshalTOML +function for sub-structs, and currently only definite types can be marshaled +(i.e. no `interface{}`). + +The following struct annotations are supported: + + toml:"Field" Overrides the field's name to output. + omitempty When set, empty values and groups are not emitted. + comment:"comment" Emits a # comment on the same line. This supports new lines. + commented:"true" Emits the value as commented. + +Note that pointers are automatically assigned the "omitempty" option, as TOML +explicitly does not handle null values (saying instead the label should be +dropped). + +Tree structural types and corresponding marshal types: + + *Tree (*)struct, (*)map[string]interface{} + []*Tree (*)[](*)struct, (*)[](*)map[string]interface{} + []interface{} (as interface{}) (*)[]primitive, (*)[]([]interface{}) + interface{} (*)primitive + +Tree primitive types and corresponding marshal types: + + uint64 uint, uint8-uint64, pointers to same + int64 int, int8-uint64, pointers to same + float64 float32, float64, pointers to same + string string, pointers to same + bool bool, pointers to same + time.LocalTime time.LocalTime{}, pointers to same + +For additional flexibility, use the Encoder API. +*/ +func Marshal(v interface{}) ([]byte, error) { + return NewEncoder(nil).marshal(v) +} + +// Encoder writes TOML values to an output stream. +type Encoder struct { + w io.Writer + encOpts + annotation + line int + col int + order marshalOrder + promoteAnon bool + indentation string +} + +// NewEncoder returns a new encoder that writes to w. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: w, + encOpts: encOptsDefaults, + annotation: annotationDefault, + line: 0, + col: 1, + order: OrderAlphabetical, + indentation: " ", + } +} + +// Encode writes the TOML encoding of v to the stream. +// +// See the documentation for Marshal for details. +func (e *Encoder) Encode(v interface{}) error { + b, err := e.marshal(v) + if err != nil { + return err + } + if _, err := e.w.Write(b); err != nil { + return err + } + return nil +} + +// QuoteMapKeys sets up the encoder to encode +// maps with string type keys with quoted TOML keys. +// +// This relieves the character limitations on map keys. +func (e *Encoder) QuoteMapKeys(v bool) *Encoder { + e.quoteMapKeys = v + return e +} + +// ArraysWithOneElementPerLine sets up the encoder to encode arrays +// with more than one element on multiple lines instead of one. +// +// For example: +// +// A = [1,2,3] +// +// Becomes +// +// A = [ +// 1, +// 2, +// 3, +// ] +func (e *Encoder) ArraysWithOneElementPerLine(v bool) *Encoder { + e.arraysOneElementPerLine = v + return e +} + +// Order allows to change in which order fields will be written to the output stream. +func (e *Encoder) Order(ord marshalOrder) *Encoder { + e.order = ord + return e +} + +// Indentation allows to change indentation when marshalling. +func (e *Encoder) Indentation(indent string) *Encoder { + e.indentation = indent + return e +} + +// SetTagName allows changing default tag "toml" +func (e *Encoder) SetTagName(v string) *Encoder { + e.tag = v + return e +} + +// SetTagComment allows changing default tag "comment" +func (e *Encoder) SetTagComment(v string) *Encoder { + e.comment = v + return e +} + +// SetTagCommented allows changing default tag "commented" +func (e *Encoder) SetTagCommented(v string) *Encoder { + e.commented = v + return e +} + +// SetTagMultiline allows changing default tag "multiline" +func (e *Encoder) SetTagMultiline(v string) *Encoder { + e.multiline = v + return e +} + +// PromoteAnonymous allows to change how anonymous struct fields are marshaled. +// Usually, they are marshaled as if the inner exported fields were fields in +// the outer struct. However, if an anonymous struct field is given a name in +// its TOML tag, it is treated like a regular struct field with that name. +// rather than being anonymous. +// +// In case anonymous promotion is enabled, all anonymous structs are promoted +// and treated like regular struct fields. +func (e *Encoder) PromoteAnonymous(promote bool) *Encoder { + e.promoteAnon = promote + return e +} + +func (e *Encoder) marshal(v interface{}) ([]byte, error) { + // Check if indentation is valid + for _, char := range e.indentation { + if !isSpace(char) { + return []byte{}, fmt.Errorf("invalid indentation: must only contains space or tab characters") + } + } + + mtype := reflect.TypeOf(v) + if mtype == nil { + return []byte{}, errors.New("nil cannot be marshaled to TOML") + } + + switch mtype.Kind() { + case reflect.Struct, reflect.Map: + case reflect.Ptr: + if mtype.Elem().Kind() != reflect.Struct { + return []byte{}, errors.New("Only pointer to struct can be marshaled to TOML") + } + if reflect.ValueOf(v).IsNil() { + return []byte{}, errors.New("nil pointer cannot be marshaled to TOML") + } + default: + return []byte{}, errors.New("Only a struct or map can be marshaled to TOML") + } + + sval := reflect.ValueOf(v) + if isCustomMarshaler(mtype) { + return callCustomMarshaler(sval) + } + if isTextMarshaler(mtype) { + return callTextMarshaler(sval) + } + t, err := e.valueToTree(mtype, sval) + if err != nil { + return []byte{}, err + } + + var buf bytes.Buffer + _, err = t.writeToOrdered(&buf, "", "", 0, e.arraysOneElementPerLine, e.order, e.indentation, false) + + return buf.Bytes(), err +} + +// Create next tree with a position based on Encoder.line +func (e *Encoder) nextTree() *Tree { + return newTreeWithPosition(Position{Line: e.line, Col: 1}) +} + +// Convert given marshal struct or map value to toml tree +func (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) { + if mtype.Kind() == reflect.Ptr { + return e.valueToTree(mtype.Elem(), mval.Elem()) + } + tval := e.nextTree() + switch mtype.Kind() { + case reflect.Struct: + switch mval.Interface().(type) { + case Tree: + reflect.ValueOf(tval).Elem().Set(mval) + default: + for i := 0; i < mtype.NumField(); i++ { + mtypef, mvalf := mtype.Field(i), mval.Field(i) + opts := tomlOptions(mtypef, e.annotation) + if opts.include && ((mtypef.Type.Kind() != reflect.Interface && !opts.omitempty) || !isZero(mvalf)) { + val, err := e.valueToToml(mtypef.Type, mvalf) + if err != nil { + return nil, err + } + if tree, ok := val.(*Tree); ok && mtypef.Anonymous && !opts.nameFromTag && !e.promoteAnon { + e.appendTree(tval, tree) + } else { + val = e.wrapTomlValue(val, tval) + tval.SetPathWithOptions([]string{opts.name}, SetOptions{ + Comment: opts.comment, + Commented: opts.commented, + Multiline: opts.multiline, + }, val) + } + } + } + } + case reflect.Map: + keys := mval.MapKeys() + if e.order == OrderPreserve && len(keys) > 0 { + // Sorting []reflect.Value is not straight forward. + // + // OrderPreserve will support deterministic results when string is used + // as the key to maps. + typ := keys[0].Type() + kind := keys[0].Kind() + if kind == reflect.String { + ikeys := make([]string, len(keys)) + for i := range keys { + ikeys[i] = keys[i].Interface().(string) + } + sort.Strings(ikeys) + for i := range ikeys { + keys[i] = reflect.ValueOf(ikeys[i]).Convert(typ) + } + } + } + for _, key := range keys { + mvalf := mval.MapIndex(key) + if (mtype.Elem().Kind() == reflect.Ptr || mtype.Elem().Kind() == reflect.Interface) && mvalf.IsNil() { + continue + } + val, err := e.valueToToml(mtype.Elem(), mvalf) + if err != nil { + return nil, err + } + val = e.wrapTomlValue(val, tval) + if e.quoteMapKeys { + keyStr, err := tomlValueStringRepresentation(key.String(), "", "", e.order, e.arraysOneElementPerLine) + if err != nil { + return nil, err + } + tval.SetPath([]string{keyStr}, val) + } else { + tval.SetPath([]string{key.String()}, val) + } + } + } + return tval, nil +} + +// Convert given marshal slice to slice of Toml trees +func (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*Tree, error) { + tval := make([]*Tree, mval.Len(), mval.Len()) + for i := 0; i < mval.Len(); i++ { + val, err := e.valueToTree(mtype.Elem(), mval.Index(i)) + if err != nil { + return nil, err + } + tval[i] = val + } + return tval, nil +} + +// Convert given marshal slice to slice of toml values +func (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) { + tval := make([]interface{}, mval.Len(), mval.Len()) + for i := 0; i < mval.Len(); i++ { + val, err := e.valueToToml(mtype.Elem(), mval.Index(i)) + if err != nil { + return nil, err + } + tval[i] = val + } + return tval, nil +} + +// Convert given marshal value to toml value +func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) { + if mtype.Kind() == reflect.Ptr { + switch { + case isCustomMarshaler(mtype): + return callCustomMarshaler(mval) + case isTextMarshaler(mtype): + b, err := callTextMarshaler(mval) + return string(b), err + default: + return e.valueToToml(mtype.Elem(), mval.Elem()) + } + } + if mtype.Kind() == reflect.Interface { + return e.valueToToml(mval.Elem().Type(), mval.Elem()) + } + switch { + case isCustomMarshaler(mtype): + return callCustomMarshaler(mval) + case isTextMarshaler(mtype): + b, err := callTextMarshaler(mval) + return string(b), err + case isTree(mtype): + return e.valueToTree(mtype, mval) + case isOtherSequence(mtype), isCustomMarshalerSequence(mtype), isTextMarshalerSequence(mtype): + return e.valueToOtherSlice(mtype, mval) + case isTreeSequence(mtype): + return e.valueToTreeSlice(mtype, mval) + default: + switch mtype.Kind() { + case reflect.Bool: + return mval.Bool(), nil + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) { + return fmt.Sprint(mval), nil + } + return mval.Int(), nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return mval.Uint(), nil + case reflect.Float32, reflect.Float64: + return mval.Float(), nil + case reflect.String: + return mval.String(), nil + case reflect.Struct: + return mval.Interface(), nil + default: + return nil, fmt.Errorf("Marshal can't handle %v(%v)", mtype, mtype.Kind()) + } + } +} + +func (e *Encoder) appendTree(t, o *Tree) error { + for key, value := range o.values { + if _, ok := t.values[key]; ok { + continue + } + if tomlValue, ok := value.(*tomlValue); ok { + tomlValue.position.Col = t.position.Col + } + t.values[key] = value + } + return nil +} + +// Create a toml value with the current line number as the position line +func (e *Encoder) wrapTomlValue(val interface{}, parent *Tree) interface{} { + _, isTree := val.(*Tree) + _, isTreeS := val.([]*Tree) + if isTree || isTreeS { + return val + } + + ret := &tomlValue{ + value: val, + position: Position{ + e.line, + parent.position.Col, + }, + } + e.line++ + return ret +} + +// Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v. +// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for +// sub-structs, and only definite types can be unmarshaled. +func (t *Tree) Unmarshal(v interface{}) error { + d := Decoder{tval: t, tagName: tagFieldName} + return d.unmarshal(v) +} + +// Marshal returns the TOML encoding of Tree. +// See Marshal() documentation for types mapping table. +func (t *Tree) Marshal() ([]byte, error) { + var buf bytes.Buffer + _, err := t.WriteTo(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// Unmarshal parses the TOML-encoded data and stores the result in the value +// pointed to by v. Behavior is similar to the Go json encoder, except that there +// is no concept of an Unmarshaler interface or UnmarshalTOML function for +// sub-structs, and currently only definite types can be unmarshaled to (i.e. no +// `interface{}`). +// +// The following struct annotations are supported: +// +// toml:"Field" Overrides the field's name to map to. +// default:"foo" Provides a default value. +// +// For default values, only fields of the following types are supported: +// * string +// * bool +// * int +// * int64 +// * float64 +// +// See Marshal() documentation for types mapping table. +func Unmarshal(data []byte, v interface{}) error { + t, err := LoadReader(bytes.NewReader(data)) + if err != nil { + return err + } + return t.Unmarshal(v) +} + +// Decoder reads and decodes TOML values from an input stream. +type Decoder struct { + r io.Reader + tval *Tree + encOpts + tagName string + strict bool + visitor visitorState +} + +// NewDecoder returns a new decoder that reads from r. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{ + r: r, + encOpts: encOptsDefaults, + tagName: tagFieldName, + } +} + +// Decode reads a TOML-encoded value from it's input +// and unmarshals it in the value pointed at by v. +// +// See the documentation for Marshal for details. +func (d *Decoder) Decode(v interface{}) error { + var err error + d.tval, err = LoadReader(d.r) + if err != nil { + return err + } + return d.unmarshal(v) +} + +// SetTagName allows changing default tag "toml" +func (d *Decoder) SetTagName(v string) *Decoder { + d.tagName = v + return d +} + +// Strict allows changing to strict decoding. Any fields that are found in the +// input data and do not have a corresponding struct member cause an error. +func (d *Decoder) Strict(strict bool) *Decoder { + d.strict = strict + return d +} + +func (d *Decoder) unmarshal(v interface{}) error { + mtype := reflect.TypeOf(v) + if mtype == nil { + return errors.New("nil cannot be unmarshaled from TOML") + } + if mtype.Kind() != reflect.Ptr { + return errors.New("only a pointer to struct or map can be unmarshaled from TOML") + } + + elem := mtype.Elem() + + switch elem.Kind() { + case reflect.Struct, reflect.Map: + case reflect.Interface: + elem = mapStringInterfaceType + default: + return errors.New("only a pointer to struct or map can be unmarshaled from TOML") + } + + if reflect.ValueOf(v).IsNil() { + return errors.New("nil pointer cannot be unmarshaled from TOML") + } + + vv := reflect.ValueOf(v).Elem() + + if d.strict { + d.visitor = newVisitorState(d.tval) + } + + sval, err := d.valueFromTree(elem, d.tval, &vv) + if err != nil { + return err + } + if err := d.visitor.validate(); err != nil { + return err + } + reflect.ValueOf(v).Elem().Set(sval) + return nil +} + +// Convert toml tree to marshal struct or map, using marshal type. When mval1 +// is non-nil, merge fields into the given value instead of allocating a new one. +func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.Value) (reflect.Value, error) { + if mtype.Kind() == reflect.Ptr { + return d.unwrapPointer(mtype, tval, mval1) + } + + // Check if pointer to value implements the Unmarshaler interface. + if mvalPtr := reflect.New(mtype); isCustomUnmarshaler(mvalPtr.Type()) { + d.visitor.visitAll() + + if tval == nil { + return mvalPtr.Elem(), nil + } + + if err := callCustomUnmarshaler(mvalPtr, tval.ToMap()); err != nil { + return reflect.ValueOf(nil), fmt.Errorf("unmarshal toml: %v", err) + } + return mvalPtr.Elem(), nil + } + + var mval reflect.Value + switch mtype.Kind() { + case reflect.Struct: + if mval1 != nil { + mval = *mval1 + } else { + mval = reflect.New(mtype).Elem() + } + + switch mval.Interface().(type) { + case Tree: + mval.Set(reflect.ValueOf(tval).Elem()) + default: + for i := 0; i < mtype.NumField(); i++ { + mtypef := mtype.Field(i) + an := annotation{tag: d.tagName} + opts := tomlOptions(mtypef, an) + if !opts.include { + continue + } + baseKey := opts.name + keysToTry := []string{ + baseKey, + strings.ToLower(baseKey), + strings.ToTitle(baseKey), + strings.ToLower(string(baseKey[0])) + baseKey[1:], + } + + found := false + if tval != nil { + for _, key := range keysToTry { + exists := tval.HasPath([]string{key}) + if !exists { + continue + } + + d.visitor.push(key) + val := tval.GetPath([]string{key}) + fval := mval.Field(i) + mvalf, err := d.valueFromToml(mtypef.Type, val, &fval) + if err != nil { + return mval, formatError(err, tval.GetPositionPath([]string{key})) + } + mval.Field(i).Set(mvalf) + found = true + d.visitor.pop() + break + } + } + + if !found && opts.defaultValue != "" { + mvalf := mval.Field(i) + var val interface{} + var err error + switch mvalf.Kind() { + case reflect.String: + val = opts.defaultValue + case reflect.Bool: + val, err = strconv.ParseBool(opts.defaultValue) + case reflect.Uint: + val, err = strconv.ParseUint(opts.defaultValue, 10, 0) + case reflect.Uint8: + val, err = strconv.ParseUint(opts.defaultValue, 10, 8) + case reflect.Uint16: + val, err = strconv.ParseUint(opts.defaultValue, 10, 16) + case reflect.Uint32: + val, err = strconv.ParseUint(opts.defaultValue, 10, 32) + case reflect.Uint64: + val, err = strconv.ParseUint(opts.defaultValue, 10, 64) + case reflect.Int: + val, err = strconv.ParseInt(opts.defaultValue, 10, 0) + case reflect.Int8: + val, err = strconv.ParseInt(opts.defaultValue, 10, 8) + case reflect.Int16: + val, err = strconv.ParseInt(opts.defaultValue, 10, 16) + case reflect.Int32: + val, err = strconv.ParseInt(opts.defaultValue, 10, 32) + case reflect.Int64: + val, err = strconv.ParseInt(opts.defaultValue, 10, 64) + case reflect.Float32: + val, err = strconv.ParseFloat(opts.defaultValue, 32) + case reflect.Float64: + val, err = strconv.ParseFloat(opts.defaultValue, 64) + default: + return mvalf, fmt.Errorf("unsupported field type for default option") + } + + if err != nil { + return mvalf, err + } + mvalf.Set(reflect.ValueOf(val).Convert(mvalf.Type())) + } + + // save the old behavior above and try to check structs + if !found && opts.defaultValue == "" && mtypef.Type.Kind() == reflect.Struct { + tmpTval := tval + if !mtypef.Anonymous { + tmpTval = nil + } + fval := mval.Field(i) + v, err := d.valueFromTree(mtypef.Type, tmpTval, &fval) + if err != nil { + return v, err + } + mval.Field(i).Set(v) + } + } + } + case reflect.Map: + mval = reflect.MakeMap(mtype) + for _, key := range tval.Keys() { + d.visitor.push(key) + // TODO: path splits key + val := tval.GetPath([]string{key}) + mvalf, err := d.valueFromToml(mtype.Elem(), val, nil) + if err != nil { + return mval, formatError(err, tval.GetPositionPath([]string{key})) + } + mval.SetMapIndex(reflect.ValueOf(key).Convert(mtype.Key()), mvalf) + d.visitor.pop() + } + } + return mval, nil +} + +// Convert toml value to marshal struct/map slice, using marshal type +func (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) { + mval, err := makeSliceOrArray(mtype, len(tval)) + if err != nil { + return mval, err + } + + for i := 0; i < len(tval); i++ { + d.visitor.push(strconv.Itoa(i)) + val, err := d.valueFromTree(mtype.Elem(), tval[i], nil) + if err != nil { + return mval, err + } + mval.Index(i).Set(val) + d.visitor.pop() + } + return mval, nil +} + +// Convert toml value to marshal primitive slice, using marshal type +func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) { + mval, err := makeSliceOrArray(mtype, len(tval)) + if err != nil { + return mval, err + } + + for i := 0; i < len(tval); i++ { + val, err := d.valueFromToml(mtype.Elem(), tval[i], nil) + if err != nil { + return mval, err + } + mval.Index(i).Set(val) + } + return mval, nil +} + +// Convert toml value to marshal primitive slice, using marshal type +func (d *Decoder) valueFromOtherSliceI(mtype reflect.Type, tval interface{}) (reflect.Value, error) { + val := reflect.ValueOf(tval) + length := val.Len() + + mval, err := makeSliceOrArray(mtype, length) + if err != nil { + return mval, err + } + + for i := 0; i < length; i++ { + val, err := d.valueFromToml(mtype.Elem(), val.Index(i).Interface(), nil) + if err != nil { + return mval, err + } + mval.Index(i).Set(val) + } + return mval, nil +} + +// Create a new slice or a new array with specified length +func makeSliceOrArray(mtype reflect.Type, tLength int) (reflect.Value, error) { + var mval reflect.Value + switch mtype.Kind() { + case reflect.Slice: + mval = reflect.MakeSlice(mtype, tLength, tLength) + case reflect.Array: + mval = reflect.New(reflect.ArrayOf(mtype.Len(), mtype.Elem())).Elem() + if tLength > mtype.Len() { + return mval, fmt.Errorf("unmarshal: TOML array length (%v) exceeds destination array length (%v)", tLength, mtype.Len()) + } + } + return mval, nil +} + +// Convert toml value to marshal value, using marshal type. When mval1 is non-nil +// and the given type is a struct value, merge fields into it. +func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) { + if mtype.Kind() == reflect.Ptr { + return d.unwrapPointer(mtype, tval, mval1) + } + + switch t := tval.(type) { + case *Tree: + var mval11 *reflect.Value + if mtype.Kind() == reflect.Struct { + mval11 = mval1 + } + + if isTree(mtype) { + return d.valueFromTree(mtype, t, mval11) + } + + if mtype.Kind() == reflect.Interface { + if mval1 == nil || mval1.IsNil() { + return d.valueFromTree(reflect.TypeOf(map[string]interface{}{}), t, nil) + } else { + return d.valueFromToml(mval1.Elem().Type(), t, nil) + } + } + + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to a tree", tval, tval) + case []*Tree: + if isTreeSequence(mtype) { + return d.valueFromTreeSlice(mtype, t) + } + if mtype.Kind() == reflect.Interface { + if mval1 == nil || mval1.IsNil() { + return d.valueFromTreeSlice(reflect.TypeOf([]map[string]interface{}{}), t) + } else { + ival := mval1.Elem() + return d.valueFromToml(mval1.Elem().Type(), t, &ival) + } + } + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to trees", tval, tval) + case []interface{}: + d.visitor.visit() + if isOtherSequence(mtype) { + return d.valueFromOtherSlice(mtype, t) + } + if mtype.Kind() == reflect.Interface { + if mval1 == nil || mval1.IsNil() { + return d.valueFromOtherSlice(reflect.TypeOf([]interface{}{}), t) + } else { + ival := mval1.Elem() + return d.valueFromToml(mval1.Elem().Type(), t, &ival) + } + } + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to a slice", tval, tval) + default: + d.visitor.visit() + mvalPtr := reflect.New(mtype) + + // Check if pointer to value implements the Unmarshaler interface. + if isCustomUnmarshaler(mvalPtr.Type()) { + if err := callCustomUnmarshaler(mvalPtr, tval); err != nil { + return reflect.ValueOf(nil), fmt.Errorf("unmarshal toml: %v", err) + } + return mvalPtr.Elem(), nil + } + + // Check if pointer to value implements the encoding.TextUnmarshaler. + if isTextUnmarshaler(mvalPtr.Type()) && !isTimeType(mtype) { + if err := d.unmarshalText(tval, mvalPtr); err != nil { + return reflect.ValueOf(nil), fmt.Errorf("unmarshal text: %v", err) + } + return mvalPtr.Elem(), nil + } + + switch mtype.Kind() { + case reflect.Bool, reflect.Struct: + val := reflect.ValueOf(tval) + + switch val.Type() { + case localDateType: + localDate := val.Interface().(LocalDate) + switch mtype { + case timeType: + return reflect.ValueOf(time.Date(localDate.Year, localDate.Month, localDate.Day, 0, 0, 0, 0, time.Local)), nil + } + case localDateTimeType: + localDateTime := val.Interface().(LocalDateTime) + switch mtype { + case timeType: + return reflect.ValueOf(time.Date( + localDateTime.Date.Year, + localDateTime.Date.Month, + localDateTime.Date.Day, + localDateTime.Time.Hour, + localDateTime.Time.Minute, + localDateTime.Time.Second, + localDateTime.Time.Nanosecond, + time.Local)), nil + } + } + + // if this passes for when mtype is reflect.Struct, tval is a time.LocalTime + if !val.Type().ConvertibleTo(mtype) { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) + } + + return val.Convert(mtype), nil + case reflect.String: + val := reflect.ValueOf(tval) + // stupidly, int64 is convertible to string. So special case this. + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) + } + + return val.Convert(mtype), nil + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + val := reflect.ValueOf(tval) + if mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) && val.Kind() == reflect.String { + d, err := time.ParseDuration(val.String()) + if err != nil { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v. %s", tval, tval, mtype.String(), err) + } + return reflect.ValueOf(d), nil + } + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) + } + if reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(reflect.TypeOf(int64(0))).Int()) { + return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) + } + + return val.Convert(mtype), nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + val := reflect.ValueOf(tval) + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) + } + + if val.Convert(reflect.TypeOf(int(1))).Int() < 0 { + return reflect.ValueOf(nil), fmt.Errorf("%v(%T) is negative so does not fit in %v", tval, tval, mtype.String()) + } + if reflect.Indirect(reflect.New(mtype)).OverflowUint(val.Convert(reflect.TypeOf(uint64(0))).Uint()) { + return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) + } + + return val.Convert(mtype), nil + case reflect.Float32, reflect.Float64: + val := reflect.ValueOf(tval) + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 { + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) + } + if reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(reflect.TypeOf(float64(0))).Float()) { + return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) + } + + return val.Convert(mtype), nil + case reflect.Interface: + if mval1 == nil || mval1.IsNil() { + return reflect.ValueOf(tval), nil + } else { + ival := mval1.Elem() + return d.valueFromToml(mval1.Elem().Type(), t, &ival) + } + case reflect.Slice, reflect.Array: + if isOtherSequence(mtype) && isOtherSequence(reflect.TypeOf(t)) { + return d.valueFromOtherSliceI(mtype, t) + } + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v(%v)", tval, tval, mtype, mtype.Kind()) + default: + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v(%v)", tval, tval, mtype, mtype.Kind()) + } + } +} + +func (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) { + var melem *reflect.Value + + if mval1 != nil && !mval1.IsNil() && (mtype.Elem().Kind() == reflect.Struct || mtype.Elem().Kind() == reflect.Interface) { + elem := mval1.Elem() + melem = &elem + } + + val, err := d.valueFromToml(mtype.Elem(), tval, melem) + if err != nil { + return reflect.ValueOf(nil), err + } + mval := reflect.New(mtype.Elem()) + mval.Elem().Set(val) + return mval, nil +} + +func (d *Decoder) unmarshalText(tval interface{}, mval reflect.Value) error { + var buf bytes.Buffer + fmt.Fprint(&buf, tval) + return callTextUnmarshaler(mval, buf.Bytes()) +} + +func tomlOptions(vf reflect.StructField, an annotation) tomlOpts { + tag := vf.Tag.Get(an.tag) + parse := strings.Split(tag, ",") + var comment string + if c := vf.Tag.Get(an.comment); c != "" { + comment = c + } + commented, _ := strconv.ParseBool(vf.Tag.Get(an.commented)) + multiline, _ := strconv.ParseBool(vf.Tag.Get(an.multiline)) + defaultValue := vf.Tag.Get(tagDefault) + result := tomlOpts{ + name: vf.Name, + nameFromTag: false, + comment: comment, + commented: commented, + multiline: multiline, + include: true, + omitempty: false, + defaultValue: defaultValue, + } + if parse[0] != "" { + if parse[0] == "-" && len(parse) == 1 { + result.include = false + } else { + result.name = strings.Trim(parse[0], " ") + result.nameFromTag = true + } + } + if vf.PkgPath != "" { + result.include = false + } + if len(parse) > 1 && strings.Trim(parse[1], " ") == "omitempty" { + result.omitempty = true + } + if vf.Type.Kind() == reflect.Ptr { + result.omitempty = true + } + return result +} + +func isZero(val reflect.Value) bool { + switch val.Type().Kind() { + case reflect.Slice, reflect.Array, reflect.Map: + return val.Len() == 0 + default: + return reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface()) + } +} + +func formatError(err error, pos Position) error { + if err.Error()[0] == '(' { // Error already contains position information + return err + } + return fmt.Errorf("%s: %s", pos, err) +} + +// visitorState keeps track of which keys were unmarshaled. +type visitorState struct { + tree *Tree + path []string + keys map[string]struct{} + active bool +} + +func newVisitorState(tree *Tree) visitorState { + path, result := []string{}, map[string]struct{}{} + insertKeys(path, result, tree) + return visitorState{ + tree: tree, + path: path[:0], + keys: result, + active: true, + } +} + +func (s *visitorState) push(key string) { + if s.active { + s.path = append(s.path, key) + } +} + +func (s *visitorState) pop() { + if s.active { + s.path = s.path[:len(s.path)-1] + } +} + +func (s *visitorState) visit() { + if s.active { + delete(s.keys, strings.Join(s.path, ".")) + } +} + +func (s *visitorState) visitAll() { + if s.active { + for k := range s.keys { + if strings.HasPrefix(k, strings.Join(s.path, ".")) { + delete(s.keys, k) + } + } + } +} + +func (s *visitorState) validate() error { + if !s.active { + return nil + } + undecoded := make([]string, 0, len(s.keys)) + for key := range s.keys { + undecoded = append(undecoded, key) + } + sort.Strings(undecoded) + if len(undecoded) > 0 { + return fmt.Errorf("undecoded keys: %q", undecoded) + } + return nil +} + +func insertKeys(path []string, m map[string]struct{}, tree *Tree) { + for k, v := range tree.values { + switch node := v.(type) { + case []*Tree: + for i, item := range node { + insertKeys(append(path, k, strconv.Itoa(i)), m, item) + } + case *Tree: + insertKeys(append(path, k), m, node) + case *tomlValue: + m[strings.Join(append(path, k), ".")] = struct{}{} + } + } +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/parser.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/parser.go new file mode 100644 index 0000000000..f5e1a44fb4 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/parser.go @@ -0,0 +1,508 @@ +// TOML Parser. + +package toml + +import ( + "errors" + "fmt" + "math" + "reflect" + "strconv" + "strings" + "time" +) + +type tomlParser struct { + flowIdx int + flow []token + tree *Tree + currentTable []string + seenTableKeys []string +} + +type tomlParserStateFn func() tomlParserStateFn + +// Formats and panics an error message based on a token +func (p *tomlParser) raiseError(tok *token, msg string, args ...interface{}) { + panic(tok.Position.String() + ": " + fmt.Sprintf(msg, args...)) +} + +func (p *tomlParser) run() { + for state := p.parseStart; state != nil; { + state = state() + } +} + +func (p *tomlParser) peek() *token { + if p.flowIdx >= len(p.flow) { + return nil + } + return &p.flow[p.flowIdx] +} + +func (p *tomlParser) assume(typ tokenType) { + tok := p.getToken() + if tok == nil { + p.raiseError(tok, "was expecting token %s, but token stream is empty", tok) + } + if tok.typ != typ { + p.raiseError(tok, "was expecting token %s, but got %s instead", typ, tok) + } +} + +func (p *tomlParser) getToken() *token { + tok := p.peek() + if tok == nil { + return nil + } + p.flowIdx++ + return tok +} + +func (p *tomlParser) parseStart() tomlParserStateFn { + tok := p.peek() + + // end of stream, parsing is finished + if tok == nil { + return nil + } + + switch tok.typ { + case tokenDoubleLeftBracket: + return p.parseGroupArray + case tokenLeftBracket: + return p.parseGroup + case tokenKey: + return p.parseAssign + case tokenEOF: + return nil + case tokenError: + p.raiseError(tok, "parsing error: %s", tok.String()) + default: + p.raiseError(tok, "unexpected token %s", tok.typ) + } + return nil +} + +func (p *tomlParser) parseGroupArray() tomlParserStateFn { + startToken := p.getToken() // discard the [[ + key := p.getToken() + if key.typ != tokenKeyGroupArray { + p.raiseError(key, "unexpected token %s, was expecting a table array key", key) + } + + // get or create table array element at the indicated part in the path + keys, err := parseKey(key.val) + if err != nil { + p.raiseError(key, "invalid table array key: %s", err) + } + p.tree.createSubTree(keys[:len(keys)-1], startToken.Position) // create parent entries + destTree := p.tree.GetPath(keys) + var array []*Tree + if destTree == nil { + array = make([]*Tree, 0) + } else if target, ok := destTree.([]*Tree); ok && target != nil { + array = destTree.([]*Tree) + } else { + p.raiseError(key, "key %s is already assigned and not of type table array", key) + } + p.currentTable = keys + + // add a new tree to the end of the table array + newTree := newTree() + newTree.position = startToken.Position + array = append(array, newTree) + p.tree.SetPath(p.currentTable, array) + + // remove all keys that were children of this table array + prefix := key.val + "." + found := false + for ii := 0; ii < len(p.seenTableKeys); { + tableKey := p.seenTableKeys[ii] + if strings.HasPrefix(tableKey, prefix) { + p.seenTableKeys = append(p.seenTableKeys[:ii], p.seenTableKeys[ii+1:]...) + } else { + found = (tableKey == key.val) + ii++ + } + } + + // keep this key name from use by other kinds of assignments + if !found { + p.seenTableKeys = append(p.seenTableKeys, key.val) + } + + // move to next parser state + p.assume(tokenDoubleRightBracket) + return p.parseStart +} + +func (p *tomlParser) parseGroup() tomlParserStateFn { + startToken := p.getToken() // discard the [ + key := p.getToken() + if key.typ != tokenKeyGroup { + p.raiseError(key, "unexpected token %s, was expecting a table key", key) + } + for _, item := range p.seenTableKeys { + if item == key.val { + p.raiseError(key, "duplicated tables") + } + } + + p.seenTableKeys = append(p.seenTableKeys, key.val) + keys, err := parseKey(key.val) + if err != nil { + p.raiseError(key, "invalid table array key: %s", err) + } + if err := p.tree.createSubTree(keys, startToken.Position); err != nil { + p.raiseError(key, "%s", err) + } + destTree := p.tree.GetPath(keys) + if target, ok := destTree.(*Tree); ok && target != nil && target.inline { + p.raiseError(key, "could not re-define exist inline table or its sub-table : %s", + strings.Join(keys, ".")) + } + p.assume(tokenRightBracket) + p.currentTable = keys + return p.parseStart +} + +func (p *tomlParser) parseAssign() tomlParserStateFn { + key := p.getToken() + p.assume(tokenEqual) + + parsedKey, err := parseKey(key.val) + if err != nil { + p.raiseError(key, "invalid key: %s", err.Error()) + } + + value := p.parseRvalue() + var tableKey []string + if len(p.currentTable) > 0 { + tableKey = p.currentTable + } else { + tableKey = []string{} + } + + prefixKey := parsedKey[0 : len(parsedKey)-1] + tableKey = append(tableKey, prefixKey...) + + // find the table to assign, looking out for arrays of tables + var targetNode *Tree + switch node := p.tree.GetPath(tableKey).(type) { + case []*Tree: + targetNode = node[len(node)-1] + case *Tree: + targetNode = node + case nil: + // create intermediate + if err := p.tree.createSubTree(tableKey, key.Position); err != nil { + p.raiseError(key, "could not create intermediate group: %s", err) + } + targetNode = p.tree.GetPath(tableKey).(*Tree) + default: + p.raiseError(key, "Unknown table type for path: %s", + strings.Join(tableKey, ".")) + } + + if targetNode.inline { + p.raiseError(key, "could not add key or sub-table to exist inline table or its sub-table : %s", + strings.Join(tableKey, ".")) + } + + // assign value to the found table + keyVal := parsedKey[len(parsedKey)-1] + localKey := []string{keyVal} + finalKey := append(tableKey, keyVal) + if targetNode.GetPath(localKey) != nil { + p.raiseError(key, "The following key was defined twice: %s", + strings.Join(finalKey, ".")) + } + var toInsert interface{} + + switch value.(type) { + case *Tree, []*Tree: + toInsert = value + default: + toInsert = &tomlValue{value: value, position: key.Position} + } + targetNode.values[keyVal] = toInsert + return p.parseStart +} + +var errInvalidUnderscore = errors.New("invalid use of _ in number") + +func numberContainsInvalidUnderscore(value string) error { + // For large numbers, you may use underscores between digits to enhance + // readability. Each underscore must be surrounded by at least one digit on + // each side. + + hasBefore := false + for idx, r := range value { + if r == '_' { + if !hasBefore || idx+1 >= len(value) { + // can't end with an underscore + return errInvalidUnderscore + } + } + hasBefore = isDigit(r) + } + return nil +} + +var errInvalidUnderscoreHex = errors.New("invalid use of _ in hex number") + +func hexNumberContainsInvalidUnderscore(value string) error { + hasBefore := false + for idx, r := range value { + if r == '_' { + if !hasBefore || idx+1 >= len(value) { + // can't end with an underscore + return errInvalidUnderscoreHex + } + } + hasBefore = isHexDigit(r) + } + return nil +} + +func cleanupNumberToken(value string) string { + cleanedVal := strings.Replace(value, "_", "", -1) + return cleanedVal +} + +func (p *tomlParser) parseRvalue() interface{} { + tok := p.getToken() + if tok == nil || tok.typ == tokenEOF { + p.raiseError(tok, "expecting a value") + } + + switch tok.typ { + case tokenString: + return tok.val + case tokenTrue: + return true + case tokenFalse: + return false + case tokenInf: + if tok.val[0] == '-' { + return math.Inf(-1) + } + return math.Inf(1) + case tokenNan: + return math.NaN() + case tokenInteger: + cleanedVal := cleanupNumberToken(tok.val) + var err error + var val int64 + if len(cleanedVal) >= 3 && cleanedVal[0] == '0' { + switch cleanedVal[1] { + case 'x': + err = hexNumberContainsInvalidUnderscore(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + val, err = strconv.ParseInt(cleanedVal[2:], 16, 64) + case 'o': + err = numberContainsInvalidUnderscore(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + val, err = strconv.ParseInt(cleanedVal[2:], 8, 64) + case 'b': + err = numberContainsInvalidUnderscore(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + val, err = strconv.ParseInt(cleanedVal[2:], 2, 64) + default: + panic("invalid base") // the lexer should catch this first + } + } else { + err = numberContainsInvalidUnderscore(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + val, err = strconv.ParseInt(cleanedVal, 10, 64) + } + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + case tokenFloat: + err := numberContainsInvalidUnderscore(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + cleanedVal := cleanupNumberToken(tok.val) + val, err := strconv.ParseFloat(cleanedVal, 64) + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + case tokenLocalTime: + val, err := ParseLocalTime(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + case tokenLocalDate: + // a local date may be followed by: + // * nothing: this is a local date + // * a local time: this is a local date-time + + next := p.peek() + if next == nil || next.typ != tokenLocalTime { + val, err := ParseLocalDate(tok.val) + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + } + + localDate := tok + localTime := p.getToken() + + next = p.peek() + if next == nil || next.typ != tokenTimeOffset { + v := localDate.val + "T" + localTime.val + val, err := ParseLocalDateTime(v) + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + } + + offset := p.getToken() + + layout := time.RFC3339Nano + v := localDate.val + "T" + localTime.val + offset.val + val, err := time.ParseInLocation(layout, v, time.UTC) + if err != nil { + p.raiseError(tok, "%s", err) + } + return val + case tokenLeftBracket: + return p.parseArray() + case tokenLeftCurlyBrace: + return p.parseInlineTable() + case tokenEqual: + p.raiseError(tok, "cannot have multiple equals for the same key") + case tokenError: + p.raiseError(tok, "%s", tok) + default: + panic(fmt.Errorf("unhandled token: %v", tok)) + } + + return nil +} + +func tokenIsComma(t *token) bool { + return t != nil && t.typ == tokenComma +} + +func (p *tomlParser) parseInlineTable() *Tree { + tree := newTree() + var previous *token +Loop: + for { + follow := p.peek() + if follow == nil || follow.typ == tokenEOF { + p.raiseError(follow, "unterminated inline table") + } + switch follow.typ { + case tokenRightCurlyBrace: + p.getToken() + break Loop + case tokenKey, tokenInteger, tokenString: + if !tokenIsComma(previous) && previous != nil { + p.raiseError(follow, "comma expected between fields in inline table") + } + key := p.getToken() + p.assume(tokenEqual) + + parsedKey, err := parseKey(key.val) + if err != nil { + p.raiseError(key, "invalid key: %s", err) + } + + value := p.parseRvalue() + tree.SetPath(parsedKey, value) + case tokenComma: + if tokenIsComma(previous) { + p.raiseError(follow, "need field between two commas in inline table") + } + p.getToken() + default: + p.raiseError(follow, "unexpected token type in inline table: %s", follow.String()) + } + previous = follow + } + if tokenIsComma(previous) { + p.raiseError(previous, "trailing comma at the end of inline table") + } + tree.inline = true + return tree +} + +func (p *tomlParser) parseArray() interface{} { + var array []interface{} + arrayType := reflect.TypeOf(newTree()) + for { + follow := p.peek() + if follow == nil || follow.typ == tokenEOF { + p.raiseError(follow, "unterminated array") + } + if follow.typ == tokenRightBracket { + p.getToken() + break + } + val := p.parseRvalue() + if reflect.TypeOf(val) != arrayType { + arrayType = nil + } + array = append(array, val) + follow = p.peek() + if follow == nil || follow.typ == tokenEOF { + p.raiseError(follow, "unterminated array") + } + if follow.typ != tokenRightBracket && follow.typ != tokenComma { + p.raiseError(follow, "missing comma") + } + if follow.typ == tokenComma { + p.getToken() + } + } + + // if the array is a mixed-type array or its length is 0, + // don't convert it to a table array + if len(array) <= 0 { + arrayType = nil + } + // An array of Trees is actually an array of inline + // tables, which is a shorthand for a table array. If the + // array was not converted from []interface{} to []*Tree, + // the two notations would not be equivalent. + if arrayType == reflect.TypeOf(newTree()) { + tomlArray := make([]*Tree, len(array)) + for i, v := range array { + tomlArray[i] = v.(*Tree) + } + return tomlArray + } + return array +} + +func parseToml(flow []token) *Tree { + result := newTree() + result.position = Position{1, 1} + parser := &tomlParser{ + flowIdx: 0, + flow: flow, + tree: result, + currentTable: make([]string, 0), + seenTableKeys: make([]string, 0), + } + parser.run() + return result +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/position.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/position.go new file mode 100644 index 0000000000..c17bff87ba --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/position.go @@ -0,0 +1,29 @@ +// Position support for go-toml + +package toml + +import ( + "fmt" +) + +// Position of a document element within a TOML document. +// +// Line and Col are both 1-indexed positions for the element's line number and +// column number, respectively. Values of zero or less will cause Invalid(), +// to return true. +type Position struct { + Line int // line within the document + Col int // column within the line +} + +// String representation of the position. +// Displays 1-indexed line and column numbers. +func (p Position) String() string { + return fmt.Sprintf("(%d, %d)", p.Line, p.Col) +} + +// Invalid returns whether or not the position is valid (i.e. with negative or +// null values) +func (p Position) Invalid() bool { + return p.Line <= 0 || p.Col <= 0 +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/token.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/token.go new file mode 100644 index 0000000000..b437fdd3b6 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/token.go @@ -0,0 +1,136 @@ +package toml + +import "fmt" + +// Define tokens +type tokenType int + +const ( + eof = -(iota + 1) +) + +const ( + tokenError tokenType = iota + tokenEOF + tokenComment + tokenKey + tokenString + tokenInteger + tokenTrue + tokenFalse + tokenFloat + tokenInf + tokenNan + tokenEqual + tokenLeftBracket + tokenRightBracket + tokenLeftCurlyBrace + tokenRightCurlyBrace + tokenLeftParen + tokenRightParen + tokenDoubleLeftBracket + tokenDoubleRightBracket + tokenLocalDate + tokenLocalTime + tokenTimeOffset + tokenKeyGroup + tokenKeyGroupArray + tokenComma + tokenColon + tokenDollar + tokenStar + tokenQuestion + tokenDot + tokenDotDot + tokenEOL +) + +var tokenTypeNames = []string{ + "Error", + "EOF", + "Comment", + "Key", + "String", + "Integer", + "True", + "False", + "Float", + "Inf", + "NaN", + "=", + "[", + "]", + "{", + "}", + "(", + ")", + "]]", + "[[", + "LocalDate", + "LocalTime", + "TimeOffset", + "KeyGroup", + "KeyGroupArray", + ",", + ":", + "$", + "*", + "?", + ".", + "..", + "EOL", +} + +type token struct { + Position + typ tokenType + val string +} + +func (tt tokenType) String() string { + idx := int(tt) + if idx < len(tokenTypeNames) { + return tokenTypeNames[idx] + } + return "Unknown" +} + +func (t token) String() string { + switch t.typ { + case tokenEOF: + return "EOF" + case tokenError: + return t.val + } + + return fmt.Sprintf("%q", t.val) +} + +func isSpace(r rune) bool { + return r == ' ' || r == '\t' +} + +func isAlphanumeric(r rune) bool { + return 'a' <= r && r <= 'z' || 'A' <= r && r <= 'Z' || r == '_' +} + +func isKeyChar(r rune) bool { + // Keys start with the first character that isn't whitespace or [ and end + // with the last non-whitespace character before the equals sign. Keys + // cannot contain a # character." + return !(r == '\r' || r == '\n' || r == eof || r == '=') +} + +func isKeyStartChar(r rune) bool { + return !(isSpace(r) || r == '\r' || r == '\n' || r == eof || r == '[') +} + +func isDigit(r rune) bool { + return '0' <= r && r <= '9' +} + +func isHexDigit(r rune) bool { + return isDigit(r) || + (r >= 'a' && r <= 'f') || + (r >= 'A' && r <= 'F') +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/toml.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/toml.go new file mode 100644 index 0000000000..cbb89a9af3 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/toml.go @@ -0,0 +1,529 @@ +package toml + +import ( + "errors" + "fmt" + "io" + "io/ioutil" + "os" + "runtime" + "strings" +) + +type tomlValue struct { + value interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list + comment string + commented bool + multiline bool + position Position +} + +// Tree is the result of the parsing of a TOML file. +type Tree struct { + values map[string]interface{} // string -> *tomlValue, *Tree, []*Tree + comment string + commented bool + inline bool + position Position +} + +func newTree() *Tree { + return newTreeWithPosition(Position{}) +} + +func newTreeWithPosition(pos Position) *Tree { + return &Tree{ + values: make(map[string]interface{}), + position: pos, + } +} + +// TreeFromMap initializes a new Tree object using the given map. +func TreeFromMap(m map[string]interface{}) (*Tree, error) { + result, err := toTree(m) + if err != nil { + return nil, err + } + return result.(*Tree), nil +} + +// Position returns the position of the tree. +func (t *Tree) Position() Position { + return t.position +} + +// Has returns a boolean indicating if the given key exists. +func (t *Tree) Has(key string) bool { + if key == "" { + return false + } + return t.HasPath(strings.Split(key, ".")) +} + +// HasPath returns true if the given path of keys exists, false otherwise. +func (t *Tree) HasPath(keys []string) bool { + return t.GetPath(keys) != nil +} + +// Keys returns the keys of the toplevel tree (does not recurse). +func (t *Tree) Keys() []string { + keys := make([]string, len(t.values)) + i := 0 + for k := range t.values { + keys[i] = k + i++ + } + return keys +} + +// Get the value at key in the Tree. +// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings. +// If you need to retrieve non-bare keys, use GetPath. +// Returns nil if the path does not exist in the tree. +// If keys is of length zero, the current tree is returned. +func (t *Tree) Get(key string) interface{} { + if key == "" { + return t + } + return t.GetPath(strings.Split(key, ".")) +} + +// GetPath returns the element in the tree indicated by 'keys'. +// If keys is of length zero, the current tree is returned. +func (t *Tree) GetPath(keys []string) interface{} { + if len(keys) == 0 { + return t + } + subtree := t + for _, intermediateKey := range keys[:len(keys)-1] { + value, exists := subtree.values[intermediateKey] + if !exists { + return nil + } + switch node := value.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + return nil + } + subtree = node[len(node)-1] + default: + return nil // cannot navigate through other node types + } + } + // branch based on final node type + switch node := subtree.values[keys[len(keys)-1]].(type) { + case *tomlValue: + return node.value + default: + return node + } +} + +// GetArray returns the value at key in the Tree. +// It returns []string, []int64, etc type if key has homogeneous lists +// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings. +// Returns nil if the path does not exist in the tree. +// If keys is of length zero, the current tree is returned. +func (t *Tree) GetArray(key string) interface{} { + if key == "" { + return t + } + return t.GetArrayPath(strings.Split(key, ".")) +} + +// GetArrayPath returns the element in the tree indicated by 'keys'. +// If keys is of length zero, the current tree is returned. +func (t *Tree) GetArrayPath(keys []string) interface{} { + if len(keys) == 0 { + return t + } + subtree := t + for _, intermediateKey := range keys[:len(keys)-1] { + value, exists := subtree.values[intermediateKey] + if !exists { + return nil + } + switch node := value.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + return nil + } + subtree = node[len(node)-1] + default: + return nil // cannot navigate through other node types + } + } + // branch based on final node type + switch node := subtree.values[keys[len(keys)-1]].(type) { + case *tomlValue: + switch n := node.value.(type) { + case []interface{}: + return getArray(n) + default: + return node.value + } + default: + return node + } +} + +// if homogeneous array, then return slice type object over []interface{} +func getArray(n []interface{}) interface{} { + var s []string + var i64 []int64 + var f64 []float64 + var bl []bool + for _, value := range n { + switch v := value.(type) { + case string: + s = append(s, v) + case int64: + i64 = append(i64, v) + case float64: + f64 = append(f64, v) + case bool: + bl = append(bl, v) + default: + return n + } + } + if len(s) == len(n) { + return s + } else if len(i64) == len(n) { + return i64 + } else if len(f64) == len(n) { + return f64 + } else if len(bl) == len(n) { + return bl + } + return n +} + +// GetPosition returns the position of the given key. +func (t *Tree) GetPosition(key string) Position { + if key == "" { + return t.position + } + return t.GetPositionPath(strings.Split(key, ".")) +} + +// SetPositionPath sets the position of element in the tree indicated by 'keys'. +// If keys is of length zero, the current tree position is set. +func (t *Tree) SetPositionPath(keys []string, pos Position) { + if len(keys) == 0 { + t.position = pos + return + } + subtree := t + for _, intermediateKey := range keys[:len(keys)-1] { + value, exists := subtree.values[intermediateKey] + if !exists { + return + } + switch node := value.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + return + } + subtree = node[len(node)-1] + default: + return + } + } + // branch based on final node type + switch node := subtree.values[keys[len(keys)-1]].(type) { + case *tomlValue: + node.position = pos + return + case *Tree: + node.position = pos + return + case []*Tree: + // go to most recent element + if len(node) == 0 { + return + } + node[len(node)-1].position = pos + return + } +} + +// GetPositionPath returns the element in the tree indicated by 'keys'. +// If keys is of length zero, the current tree is returned. +func (t *Tree) GetPositionPath(keys []string) Position { + if len(keys) == 0 { + return t.position + } + subtree := t + for _, intermediateKey := range keys[:len(keys)-1] { + value, exists := subtree.values[intermediateKey] + if !exists { + return Position{0, 0} + } + switch node := value.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + return Position{0, 0} + } + subtree = node[len(node)-1] + default: + return Position{0, 0} + } + } + // branch based on final node type + switch node := subtree.values[keys[len(keys)-1]].(type) { + case *tomlValue: + return node.position + case *Tree: + return node.position + case []*Tree: + // go to most recent element + if len(node) == 0 { + return Position{0, 0} + } + return node[len(node)-1].position + default: + return Position{0, 0} + } +} + +// GetDefault works like Get but with a default value +func (t *Tree) GetDefault(key string, def interface{}) interface{} { + val := t.Get(key) + if val == nil { + return def + } + return val +} + +// SetOptions arguments are supplied to the SetWithOptions and SetPathWithOptions functions to modify marshalling behaviour. +// The default values within the struct are valid default options. +type SetOptions struct { + Comment string + Commented bool + Multiline bool +} + +// SetWithOptions is the same as Set, but allows you to provide formatting +// instructions to the key, that will be used by Marshal(). +func (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) { + t.SetPathWithOptions(strings.Split(key, "."), opts, value) +} + +// SetPathWithOptions is the same as SetPath, but allows you to provide +// formatting instructions to the key, that will be reused by Marshal(). +func (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) { + subtree := t + for i, intermediateKey := range keys[:len(keys)-1] { + nextTree, exists := subtree.values[intermediateKey] + if !exists { + nextTree = newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}) + subtree.values[intermediateKey] = nextTree // add new element here + } + switch node := nextTree.(type) { + case *Tree: + subtree = node + case []*Tree: + // go to most recent element + if len(node) == 0 { + // create element if it does not exist + node = append(node, newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})) + subtree.values[intermediateKey] = node + } + subtree = node[len(node)-1] + } + } + + var toInsert interface{} + + switch v := value.(type) { + case *Tree: + v.comment = opts.Comment + v.commented = opts.Commented + toInsert = value + case []*Tree: + for i := range v { + v[i].commented = opts.Commented + } + toInsert = value + case *tomlValue: + v.comment = opts.Comment + v.commented = opts.Commented + v.multiline = opts.Multiline + toInsert = v + default: + toInsert = &tomlValue{value: value, + comment: opts.Comment, + commented: opts.Commented, + multiline: opts.Multiline, + position: Position{Line: subtree.position.Line + len(subtree.values) + 1, Col: subtree.position.Col}} + } + + subtree.values[keys[len(keys)-1]] = toInsert +} + +// Set an element in the tree. +// Key is a dot-separated path (e.g. a.b.c). +// Creates all necessary intermediate trees, if needed. +func (t *Tree) Set(key string, value interface{}) { + t.SetWithComment(key, "", false, value) +} + +// SetWithComment is the same as Set, but allows you to provide comment +// information to the key, that will be reused by Marshal(). +func (t *Tree) SetWithComment(key string, comment string, commented bool, value interface{}) { + t.SetPathWithComment(strings.Split(key, "."), comment, commented, value) +} + +// SetPath sets an element in the tree. +// Keys is an array of path elements (e.g. {"a","b","c"}). +// Creates all necessary intermediate trees, if needed. +func (t *Tree) SetPath(keys []string, value interface{}) { + t.SetPathWithComment(keys, "", false, value) +} + +// SetPathWithComment is the same as SetPath, but allows you to provide comment +// information to the key, that will be reused by Marshal(). +func (t *Tree) SetPathWithComment(keys []string, comment string, commented bool, value interface{}) { + t.SetPathWithOptions(keys, SetOptions{Comment: comment, Commented: commented}, value) +} + +// Delete removes a key from the tree. +// Key is a dot-separated path (e.g. a.b.c). +func (t *Tree) Delete(key string) error { + keys, err := parseKey(key) + if err != nil { + return err + } + return t.DeletePath(keys) +} + +// DeletePath removes a key from the tree. +// Keys is an array of path elements (e.g. {"a","b","c"}). +func (t *Tree) DeletePath(keys []string) error { + keyLen := len(keys) + if keyLen == 1 { + delete(t.values, keys[0]) + return nil + } + tree := t.GetPath(keys[:keyLen-1]) + item := keys[keyLen-1] + switch node := tree.(type) { + case *Tree: + delete(node.values, item) + return nil + } + return errors.New("no such key to delete") +} + +// createSubTree takes a tree and a key and create the necessary intermediate +// subtrees to create a subtree at that point. In-place. +// +// e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b] +// and tree[a][b][c] +// +// Returns nil on success, error object on failure +func (t *Tree) createSubTree(keys []string, pos Position) error { + subtree := t + for i, intermediateKey := range keys { + nextTree, exists := subtree.values[intermediateKey] + if !exists { + tree := newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}) + tree.position = pos + tree.inline = subtree.inline + subtree.values[intermediateKey] = tree + nextTree = tree + } + + switch node := nextTree.(type) { + case []*Tree: + subtree = node[len(node)-1] + case *Tree: + subtree = node + default: + return fmt.Errorf("unknown type for path %s (%s): %T (%#v)", + strings.Join(keys, "."), intermediateKey, nextTree, nextTree) + } + } + return nil +} + +// LoadBytes creates a Tree from a []byte. +func LoadBytes(b []byte) (tree *Tree, err error) { + defer func() { + if r := recover(); r != nil { + if _, ok := r.(runtime.Error); ok { + panic(r) + } + err = errors.New(r.(string)) + } + }() + + if len(b) >= 4 && (hasUTF32BigEndianBOM4(b) || hasUTF32LittleEndianBOM4(b)) { + b = b[4:] + } else if len(b) >= 3 && hasUTF8BOM3(b) { + b = b[3:] + } else if len(b) >= 2 && (hasUTF16BigEndianBOM2(b) || hasUTF16LittleEndianBOM2(b)) { + b = b[2:] + } + + tree = parseToml(lexToml(b)) + return +} + +func hasUTF16BigEndianBOM2(b []byte) bool { + return b[0] == 0xFE && b[1] == 0xFF +} + +func hasUTF16LittleEndianBOM2(b []byte) bool { + return b[0] == 0xFF && b[1] == 0xFE +} + +func hasUTF8BOM3(b []byte) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +func hasUTF32BigEndianBOM4(b []byte) bool { + return b[0] == 0x00 && b[1] == 0x00 && b[2] == 0xFE && b[3] == 0xFF +} + +func hasUTF32LittleEndianBOM4(b []byte) bool { + return b[0] == 0xFF && b[1] == 0xFE && b[2] == 0x00 && b[3] == 0x00 +} + +// LoadReader creates a Tree from any io.Reader. +func LoadReader(reader io.Reader) (tree *Tree, err error) { + inputBytes, err := ioutil.ReadAll(reader) + if err != nil { + return + } + tree, err = LoadBytes(inputBytes) + return +} + +// Load creates a Tree from a string. +func Load(content string) (tree *Tree, err error) { + return LoadBytes([]byte(content)) +} + +// LoadFile creates a Tree from a file. +func LoadFile(path string) (tree *Tree, err error) { + file, err := os.Open(path) + if err != nil { + return nil, err + } + defer file.Close() + return LoadReader(file) +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_create.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_create.go new file mode 100644 index 0000000000..80353500a0 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_create.go @@ -0,0 +1,155 @@ +package toml + +import ( + "fmt" + "reflect" + "time" +) + +var kindToType = [reflect.String + 1]reflect.Type{ + reflect.Bool: reflect.TypeOf(true), + reflect.String: reflect.TypeOf(""), + reflect.Float32: reflect.TypeOf(float64(1)), + reflect.Float64: reflect.TypeOf(float64(1)), + reflect.Int: reflect.TypeOf(int64(1)), + reflect.Int8: reflect.TypeOf(int64(1)), + reflect.Int16: reflect.TypeOf(int64(1)), + reflect.Int32: reflect.TypeOf(int64(1)), + reflect.Int64: reflect.TypeOf(int64(1)), + reflect.Uint: reflect.TypeOf(uint64(1)), + reflect.Uint8: reflect.TypeOf(uint64(1)), + reflect.Uint16: reflect.TypeOf(uint64(1)), + reflect.Uint32: reflect.TypeOf(uint64(1)), + reflect.Uint64: reflect.TypeOf(uint64(1)), +} + +// typeFor returns a reflect.Type for a reflect.Kind, or nil if none is found. +// supported values: +// string, bool, int64, uint64, float64, time.Time, int, int8, int16, int32, uint, uint8, uint16, uint32, float32 +func typeFor(k reflect.Kind) reflect.Type { + if k > 0 && int(k) < len(kindToType) { + return kindToType[k] + } + return nil +} + +func simpleValueCoercion(object interface{}) (interface{}, error) { + switch original := object.(type) { + case string, bool, int64, uint64, float64, time.Time: + return original, nil + case int: + return int64(original), nil + case int8: + return int64(original), nil + case int16: + return int64(original), nil + case int32: + return int64(original), nil + case uint: + return uint64(original), nil + case uint8: + return uint64(original), nil + case uint16: + return uint64(original), nil + case uint32: + return uint64(original), nil + case float32: + return float64(original), nil + case fmt.Stringer: + return original.String(), nil + case []interface{}: + value := reflect.ValueOf(original) + length := value.Len() + arrayValue := reflect.MakeSlice(value.Type(), 0, length) + for i := 0; i < length; i++ { + val := value.Index(i).Interface() + simpleValue, err := simpleValueCoercion(val) + if err != nil { + return nil, err + } + arrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue)) + } + return arrayValue.Interface(), nil + default: + return nil, fmt.Errorf("cannot convert type %T to Tree", object) + } +} + +func sliceToTree(object interface{}) (interface{}, error) { + // arrays are a bit tricky, since they can represent either a + // collection of simple values, which is represented by one + // *tomlValue, or an array of tables, which is represented by an + // array of *Tree. + + // holding the assumption that this function is called from toTree only when value.Kind() is Array or Slice + value := reflect.ValueOf(object) + insideType := value.Type().Elem() + length := value.Len() + if length > 0 { + insideType = reflect.ValueOf(value.Index(0).Interface()).Type() + } + if insideType.Kind() == reflect.Map { + // this is considered as an array of tables + tablesArray := make([]*Tree, 0, length) + for i := 0; i < length; i++ { + table := value.Index(i) + tree, err := toTree(table.Interface()) + if err != nil { + return nil, err + } + tablesArray = append(tablesArray, tree.(*Tree)) + } + return tablesArray, nil + } + + sliceType := typeFor(insideType.Kind()) + if sliceType == nil { + sliceType = insideType + } + + arrayValue := reflect.MakeSlice(reflect.SliceOf(sliceType), 0, length) + + for i := 0; i < length; i++ { + val := value.Index(i).Interface() + simpleValue, err := simpleValueCoercion(val) + if err != nil { + return nil, err + } + arrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue)) + } + return &tomlValue{value: arrayValue.Interface(), position: Position{}}, nil +} + +func toTree(object interface{}) (interface{}, error) { + value := reflect.ValueOf(object) + + if value.Kind() == reflect.Map { + values := map[string]interface{}{} + keys := value.MapKeys() + for _, key := range keys { + if key.Kind() != reflect.String { + if _, ok := key.Interface().(string); !ok { + return nil, fmt.Errorf("map key needs to be a string, not %T (%v)", key.Interface(), key.Kind()) + } + } + + v := value.MapIndex(key) + newValue, err := toTree(v.Interface()) + if err != nil { + return nil, err + } + values[key.String()] = newValue + } + return &Tree{values: values, position: Position{}}, nil + } + + if value.Kind() == reflect.Array || value.Kind() == reflect.Slice { + return sliceToTree(object) + } + + simpleValue, err := simpleValueCoercion(object) + if err != nil { + return nil, err + } + return &tomlValue{value: simpleValue, position: Position{}}, nil +} diff --git a/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_write.go b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_write.go new file mode 100644 index 0000000000..ae6dac49d1 --- /dev/null +++ b/pkg/init/cmd/service/vendor/github.com/pelletier/go-toml/tomltree_write.go @@ -0,0 +1,517 @@ +package toml + +import ( + "bytes" + "fmt" + "io" + "math" + "math/big" + "reflect" + "sort" + "strconv" + "strings" + "time" +) + +type valueComplexity int + +const ( + valueSimple valueComplexity = iota + 1 + valueComplex +) + +type sortNode struct { + key string + complexity valueComplexity +} + +// Encodes a string to a TOML-compliant multi-line string value +// This function is a clone of the existing encodeTomlString function, except that whitespace characters +// are preserved. Quotation marks and backslashes are also not escaped. +func encodeMultilineTomlString(value string, commented string) string { + var b bytes.Buffer + adjacentQuoteCount := 0 + + b.WriteString(commented) + for i, rr := range value { + if rr != '"' { + adjacentQuoteCount = 0 + } else { + adjacentQuoteCount++ + } + switch rr { + case '\b': + b.WriteString(`\b`) + case '\t': + b.WriteString("\t") + case '\n': + b.WriteString("\n" + commented) + case '\f': + b.WriteString(`\f`) + case '\r': + b.WriteString("\r") + case '"': + if adjacentQuoteCount >= 3 || i == len(value)-1 { + adjacentQuoteCount = 0 + b.WriteString(`\"`) + } else { + b.WriteString(`"`) + } + case '\\': + b.WriteString(`\`) + default: + intRr := uint16(rr) + if intRr < 0x001F { + b.WriteString(fmt.Sprintf("\\u%0.4X", intRr)) + } else { + b.WriteRune(rr) + } + } + } + return b.String() +} + +// Encodes a string to a TOML-compliant string value +func encodeTomlString(value string) string { + var b bytes.Buffer + + for _, rr := range value { + switch rr { + case '\b': + b.WriteString(`\b`) + case '\t': + b.WriteString(`\t`) + case '\n': + b.WriteString(`\n`) + case '\f': + b.WriteString(`\f`) + case '\r': + b.WriteString(`\r`) + case '"': + b.WriteString(`\"`) + case '\\': + b.WriteString(`\\`) + default: + intRr := uint16(rr) + if intRr < 0x001F { + b.WriteString(fmt.Sprintf("\\u%0.4X", intRr)) + } else { + b.WriteRune(rr) + } + } + } + return b.String() +} + +func tomlTreeStringRepresentation(t *Tree, ord marshalOrder) (string, error) { + var orderedVals []sortNode + switch ord { + case OrderPreserve: + orderedVals = sortByLines(t) + default: + orderedVals = sortAlphabetical(t) + } + + var values []string + for _, node := range orderedVals { + k := node.key + v := t.values[k] + + repr, err := tomlValueStringRepresentation(v, "", "", ord, false) + if err != nil { + return "", err + } + values = append(values, quoteKeyIfNeeded(k)+" = "+repr) + } + return "{ " + strings.Join(values, ", ") + " }", nil +} + +func tomlValueStringRepresentation(v interface{}, commented string, indent string, ord marshalOrder, arraysOneElementPerLine bool) (string, error) { + // this interface check is added to dereference the change made in the writeTo function. + // That change was made to allow this function to see formatting options. + tv, ok := v.(*tomlValue) + if ok { + v = tv.value + } else { + tv = &tomlValue{} + } + + switch value := v.(type) { + case uint64: + return strconv.FormatUint(value, 10), nil + case int64: + return strconv.FormatInt(value, 10), nil + case float64: + // Default bit length is full 64 + bits := 64 + // Float panics if nan is used + if !math.IsNaN(value) { + // if 32 bit accuracy is enough to exactly show, use 32 + _, acc := big.NewFloat(value).Float32() + if acc == big.Exact { + bits = 32 + } + } + if math.Trunc(value) == value { + return strings.ToLower(strconv.FormatFloat(value, 'f', 1, bits)), nil + } + return strings.ToLower(strconv.FormatFloat(value, 'f', -1, bits)), nil + case string: + if tv.multiline { + return "\"\"\"\n" + encodeMultilineTomlString(value, commented) + "\"\"\"", nil + } + return "\"" + encodeTomlString(value) + "\"", nil + case []byte: + b, _ := v.([]byte) + return string(b), nil + case bool: + if value { + return "true", nil + } + return "false", nil + case time.Time: + return value.Format(time.RFC3339), nil + case LocalDate: + return value.String(), nil + case LocalDateTime: + return value.String(), nil + case LocalTime: + return value.String(), nil + case *Tree: + return tomlTreeStringRepresentation(value, ord) + case nil: + return "", nil + } + + rv := reflect.ValueOf(v) + + if rv.Kind() == reflect.Slice { + var values []string + for i := 0; i < rv.Len(); i++ { + item := rv.Index(i).Interface() + itemRepr, err := tomlValueStringRepresentation(item, commented, indent, ord, arraysOneElementPerLine) + if err != nil { + return "", err + } + values = append(values, itemRepr) + } + if arraysOneElementPerLine && len(values) > 1 { + stringBuffer := bytes.Buffer{} + valueIndent := indent + ` ` // TODO: move that to a shared encoder state + + stringBuffer.WriteString("[\n") + + for _, value := range values { + stringBuffer.WriteString(valueIndent) + stringBuffer.WriteString(commented + value) + stringBuffer.WriteString(`,`) + stringBuffer.WriteString("\n") + } + + stringBuffer.WriteString(indent + commented + "]") + + return stringBuffer.String(), nil + } + return "[" + strings.Join(values, ", ") + "]", nil + } + return "", fmt.Errorf("unsupported value type %T: %v", v, v) +} + +func getTreeArrayLine(trees []*Tree) (line int) { + // get lowest line number that is not 0 + for _, tv := range trees { + if tv.position.Line < line || line == 0 { + line = tv.position.Line + } + } + return +} + +func sortByLines(t *Tree) (vals []sortNode) { + var ( + line int + lines []int + tv *Tree + tom *tomlValue + node sortNode + ) + vals = make([]sortNode, 0) + m := make(map[int]sortNode) + + for k := range t.values { + v := t.values[k] + switch v.(type) { + case *Tree: + tv = v.(*Tree) + line = tv.position.Line + node = sortNode{key: k, complexity: valueComplex} + case []*Tree: + line = getTreeArrayLine(v.([]*Tree)) + node = sortNode{key: k, complexity: valueComplex} + default: + tom = v.(*tomlValue) + line = tom.position.Line + node = sortNode{key: k, complexity: valueSimple} + } + lines = append(lines, line) + vals = append(vals, node) + m[line] = node + } + sort.Ints(lines) + + for i, line := range lines { + vals[i] = m[line] + } + + return vals +} + +func sortAlphabetical(t *Tree) (vals []sortNode) { + var ( + node sortNode + simpVals []string + compVals []string + ) + vals = make([]sortNode, 0) + m := make(map[string]sortNode) + + for k := range t.values { + v := t.values[k] + switch v.(type) { + case *Tree, []*Tree: + node = sortNode{key: k, complexity: valueComplex} + compVals = append(compVals, node.key) + default: + node = sortNode{key: k, complexity: valueSimple} + simpVals = append(simpVals, node.key) + } + vals = append(vals, node) + m[node.key] = node + } + + // Simples first to match previous implementation + sort.Strings(simpVals) + i := 0 + for _, key := range simpVals { + vals[i] = m[key] + i++ + } + + sort.Strings(compVals) + for _, key := range compVals { + vals[i] = m[key] + i++ + } + + return vals +} + +func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) { + return t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, " ", false) +} + +func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord marshalOrder, indentString string, parentCommented bool) (int64, error) { + var orderedVals []sortNode + + switch ord { + case OrderPreserve: + orderedVals = sortByLines(t) + default: + orderedVals = sortAlphabetical(t) + } + + for _, node := range orderedVals { + switch node.complexity { + case valueComplex: + k := node.key + v := t.values[k] + + combinedKey := quoteKeyIfNeeded(k) + if keyspace != "" { + combinedKey = keyspace + "." + combinedKey + } + + switch node := v.(type) { + // node has to be of those two types given how keys are sorted above + case *Tree: + tv, ok := t.values[k].(*Tree) + if !ok { + return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k]) + } + if tv.comment != "" { + comment := strings.Replace(tv.comment, "\n", "\n"+indent+"#", -1) + start := "# " + if strings.HasPrefix(comment, "#") { + start = "" + } + writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment) + bytesCount += int64(writtenBytesCountComment) + if errc != nil { + return bytesCount, errc + } + } + + var commented string + if parentCommented || t.commented || tv.commented { + commented = "# " + } + writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[", combinedKey, "]\n") + bytesCount += int64(writtenBytesCount) + if err != nil { + return bytesCount, err + } + bytesCount, err = node.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, parentCommented || t.commented || tv.commented) + if err != nil { + return bytesCount, err + } + case []*Tree: + for _, subTree := range node { + var commented string + if parentCommented || t.commented || subTree.commented { + commented = "# " + } + writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[[", combinedKey, "]]\n") + bytesCount += int64(writtenBytesCount) + if err != nil { + return bytesCount, err + } + + bytesCount, err = subTree.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, parentCommented || t.commented || subTree.commented) + if err != nil { + return bytesCount, err + } + } + } + default: // Simple + k := node.key + v, ok := t.values[k].(*tomlValue) + if !ok { + return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k]) + } + + var commented string + if parentCommented || t.commented || v.commented { + commented = "# " + } + repr, err := tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine) + if err != nil { + return bytesCount, err + } + + if v.comment != "" { + comment := strings.Replace(v.comment, "\n", "\n"+indent+"#", -1) + start := "# " + if strings.HasPrefix(comment, "#") { + start = "" + } + writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment, "\n") + bytesCount += int64(writtenBytesCountComment) + if errc != nil { + return bytesCount, errc + } + } + + quotedKey := quoteKeyIfNeeded(k) + writtenBytesCount, err := writeStrings(w, indent, commented, quotedKey, " = ", repr, "\n") + bytesCount += int64(writtenBytesCount) + if err != nil { + return bytesCount, err + } + } + } + + return bytesCount, nil +} + +// quote a key if it does not fit the bare key format (A-Za-z0-9_-) +// quoted keys use the same rules as strings +func quoteKeyIfNeeded(k string) string { + // when encoding a map with the 'quoteMapKeys' option enabled, the tree will contain + // keys that have already been quoted. + // not an ideal situation, but good enough of a stop gap. + if len(k) >= 2 && k[0] == '"' && k[len(k)-1] == '"' { + return k + } + isBare := true + for _, r := range k { + if !isValidBareChar(r) { + isBare = false + break + } + } + if isBare { + return k + } + return quoteKey(k) +} + +func quoteKey(k string) string { + return "\"" + encodeTomlString(k) + "\"" +} + +func writeStrings(w io.Writer, s ...string) (int, error) { + var n int + for i := range s { + b, err := io.WriteString(w, s[i]) + n += b + if err != nil { + return n, err + } + } + return n, nil +} + +// WriteTo encode the Tree as Toml and writes it to the writer w. +// Returns the number of bytes written in case of success, or an error if anything happened. +func (t *Tree) WriteTo(w io.Writer) (int64, error) { + return t.writeTo(w, "", "", 0, false) +} + +// ToTomlString generates a human-readable representation of the current tree. +// Output spans multiple lines, and is suitable for ingest by a TOML parser. +// If the conversion cannot be performed, ToString returns a non-nil error. +func (t *Tree) ToTomlString() (string, error) { + b, err := t.Marshal() + if err != nil { + return "", err + } + return string(b), nil +} + +// String generates a human-readable representation of the current tree. +// Alias of ToString. Present to implement the fmt.Stringer interface. +func (t *Tree) String() string { + result, _ := t.ToTomlString() + return result +} + +// ToMap recursively generates a representation of the tree using Go built-in structures. +// The following types are used: +// +// * bool +// * float64 +// * int64 +// * string +// * uint64 +// * time.Time +// * map[string]interface{} (where interface{} is any of this list) +// * []interface{} (where interface{} is any of this list) +func (t *Tree) ToMap() map[string]interface{} { + result := map[string]interface{}{} + + for k, v := range t.values { + switch node := v.(type) { + case []*Tree: + var array []interface{} + for _, item := range node { + array = append(array, item.ToMap()) + } + result[k] = array + case *Tree: + result[k] = node.ToMap() + case *tomlValue: + result[k] = node.value + } + } + return result +} diff --git a/test/cases/040_packages/020_init_containerd/runtime-config.toml b/test/cases/040_packages/020_init_containerd/runtime-config.toml new file mode 100644 index 0000000000..b931e70bd4 --- /dev/null +++ b/test/cases/040_packages/020_init_containerd/runtime-config.toml @@ -0,0 +1,3 @@ +cliopts="--log-level trace" +stderr="/var/log/containerd.out.log" +stdout="stdout" diff --git a/test/cases/040_packages/020_init_containerd/test.yml b/test/cases/040_packages/020_init_containerd/test.yml index adb612cbd9..458889997f 100644 --- a/test/cases/040_packages/020_init_containerd/test.yml +++ b/test/cases/040_packages/020_init_containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:946ebf1d74bc96da8d4b90c75ae0dd8a8e962a6b - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 @@ -19,8 +19,8 @@ services: files: - path: check.sh source: ./check.sh - - path: /etc/containerd/cli-opts - contents: "--log-level trace" + - path: /etc/containerd/runtime-config.toml + source: ./runtime-config.toml trust: org: - linuxkit From edec943651af24f583d8deb6b60da4b0bb304788 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Wed, 21 Oct 2020 11:13:52 +0300 Subject: [PATCH 16/20] update sha hashes for pkg/init Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- examples/addbinds.yml | 2 +- examples/aws.yml | 2 +- examples/azure.yml | 2 +- examples/cadvisor.yml | 2 +- examples/dm-crypt-loop.yml | 2 +- examples/dm-crypt.yml | 2 +- examples/docker-for-mac.yml | 2 +- examples/docker.yml | 2 +- examples/gcp.yml | 2 +- examples/getty.yml | 2 +- examples/hetzner.yml | 2 +- examples/hostmount-writeable-overlay.yml | 2 +- examples/influxdb-os.yml | 2 +- examples/logging.yml | 2 +- examples/minimal.yml | 2 +- examples/node_exporter.yml | 2 +- examples/openstack.yml | 2 +- examples/packet.yml | 2 +- examples/redis-os.yml | 2 +- examples/rt-for-vmware.yml | 2 +- examples/scaleway.yml | 2 +- examples/sshd.yml | 2 +- examples/static-ip.yml | 2 +- examples/swap.yml | 2 +- examples/tpm.yml | 2 +- examples/vmware.yml | 2 +- examples/vpnkit-forwarder.yml | 2 +- examples/vsudd-containerd.yml | 2 +- examples/vultr.yml | 2 +- examples/wireguard.yml | 2 +- linuxkit.yml | 2 +- projects/clear-containers/clear-containers.yml | 2 +- projects/compose/compose-dynamic.yml | 2 +- projects/compose/compose-static.yml | 2 +- projects/ima-namespace/ima-namespace.yml | 2 +- projects/landlock/landlock.yml | 2 +- projects/memorizer/memorizer.yml | 2 +- projects/miragesdk/examples/fdd.yml | 2 +- projects/miragesdk/examples/mirage-dhcp.yml | 2 +- projects/okernel/examples/okernel_simple.yaml | 2 +- projects/shiftfs/shiftfs.yml | 2 +- src/cmd/linuxkit/moby/linuxkit.go | 2 +- test/cases/000_build/000_formats/test.yml | 2 +- test/cases/000_build/010_reproducible/test.yml | 2 +- test/cases/000_build/020_binds/test.yml | 2 +- .../cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/000_qemu/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/000_qemu/010_run_iso/test.yml | 2 +- test/cases/010_platforms/000_qemu/020_run_efi/test.yml | 2 +- test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml | 2 +- test/cases/010_platforms/000_qemu/050_run_aws/test.yml | 2 +- test/cases/010_platforms/000_qemu/100_container/test.yml | 2 +- .../010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml | 2 +- .../010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml | 2 +- test/cases/010_platforms/010_hyperkit/010_acpi/test.yml | 2 +- test/cases/010_platforms/110_gcp/000_run/test.yml | 2 +- test/cases/020_kernel/002_config_4.14.x/test.yml | 2 +- test/cases/020_kernel/005_config_4.19.x/test.yml | 2 +- test/cases/020_kernel/011_config_5.4.x/test.yml | 2 +- test/cases/020_kernel/012_config_5.6.x/test.yml | 2 +- test/cases/020_kernel/102_kmod_4.14.x/test.yml | 2 +- test/cases/020_kernel/105_kmod_4.19.x/test.yml | 2 +- test/cases/020_kernel/111_kmod_5.4.x/test.yml | 2 +- test/cases/020_kernel/112_kmod_5.6.x/test.yml | 2 +- test/cases/020_kernel/200_namespace/common.yml | 2 +- test/cases/030_security/000_docker-bench/test.yml | 2 +- test/cases/030_security/010_ports/test.yml | 2 +- test/cases/040_packages/002_binfmt/test.yml | 2 +- test/cases/040_packages/002_bpftrace/test.yml | 2 +- test/cases/040_packages/003_ca-certificates/test.yml | 2 +- test/cases/040_packages/003_containerd/test.yml | 2 +- test/cases/040_packages/004_dhcpcd/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/000_simple/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/001_luks/test.yml | 2 +- test/cases/040_packages/004_dm-crypt/002_key/test.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test-create.yml | 2 +- test/cases/040_packages/005_extend/000_ext4/test.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/001_btrfs/test.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test-create.yml | 2 +- test/cases/040_packages/005_extend/002_xfs/test.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test-create.yml | 2 +- test/cases/040_packages/005_extend/003_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/000_auto/test.yml | 2 +- test/cases/040_packages/006_format_mount/001_by_label/test.yml | 2 +- .../cases/040_packages/006_format_mount/002_by_name/test.yml.in | 2 +- test/cases/040_packages/006_format_mount/003_btrfs/test.yml | 2 +- test/cases/040_packages/006_format_mount/004_xfs/test.yml | 2 +- .../040_packages/006_format_mount/005_by_device_force/test.yml | 2 +- test/cases/040_packages/006_format_mount/006_gpt/test.yml | 2 +- test/cases/040_packages/006_format_mount/010_multiple/test.yml | 2 +- test/cases/040_packages/007_getty-containerd/test.yml | 2 +- test/cases/040_packages/008_metadata/000_cidata/test.yml | 2 +- test/cases/040_packages/012_losetup/test.yml | 2 +- test/cases/040_packages/013_mkimage/mkimage.yml | 2 +- test/cases/040_packages/013_mkimage/run.yml | 2 +- test/cases/040_packages/019_sysctl/test.yml | 2 +- test/cases/040_packages/020_init_containerd/test.yml | 2 +- test/cases/040_packages/023_wireguard/test.yml | 2 +- test/cases/040_packages/030_logwrite/test.yml | 2 +- test/cases/040_packages/031_kmsg/test.yml | 2 +- test/cases/040_packages/032_bcc/test.yml | 2 +- test/hack/test-ltp.yml | 2 +- test/hack/test.yml | 2 +- test/pkg/ns/template.yml | 2 +- 106 files changed, 106 insertions(+), 106 deletions(-) diff --git a/examples/addbinds.yml b/examples/addbinds.yml index ed9c9f21e5..3f7e97057a 100644 --- a/examples/addbinds.yml +++ b/examples/addbinds.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:abfc6701b9ca17e34ac9439ce5946a247e720ff5 diff --git a/examples/aws.yml b/examples/aws.yml index f5242d9f18..68528d6319 100644 --- a/examples/aws.yml +++ b/examples/aws.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/azure.yml b/examples/azure.yml index fdcd6c604d..c3715bf475 100644 --- a/examples/azure.yml +++ b/examples/azure.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/cadvisor.yml b/examples/cadvisor.yml index e9c4a26ce0..0b3d2be994 100644 --- a/examples/cadvisor.yml +++ b/examples/cadvisor.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt-loop.yml b/examples/dm-crypt-loop.yml index 221e002b4d..db5324a91a 100644 --- a/examples/dm-crypt-loop.yml +++ b/examples/dm-crypt-loop.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/dm-crypt.yml b/examples/dm-crypt.yml index c169a39a2f..1d1a5ee991 100644 --- a/examples/dm-crypt.yml +++ b/examples/dm-crypt.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker-for-mac.yml b/examples/docker-for-mac.yml index b4b3da003f..020f708532 100644 --- a/examples/docker-for-mac.yml +++ b/examples/docker-for-mac.yml @@ -4,7 +4,7 @@ kernel: cmdline: "console=ttyS0 page_poison=1" init: - linuxkit/vpnkit-expose-port:v0.8 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/docker.yml b/examples/docker.yml index 8de9eb3d8d..4a9a7be580 100644 --- a/examples/docker.yml +++ b/examples/docker.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/gcp.yml b/examples/gcp.yml index d10bce601e..0fdf74954e 100644 --- a/examples/gcp.yml +++ b/examples/gcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/getty.yml b/examples/getty.yml index 097431c0d3..20a593b9ad 100644 --- a/examples/getty.yml +++ b/examples/getty.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hetzner.yml b/examples/hetzner.yml index 5a0ece1c1d..b821f52292 100644 --- a/examples/hetzner.yml +++ b/examples/hetzner.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/hostmount-writeable-overlay.yml b/examples/hostmount-writeable-overlay.yml index 0dc1b54a5c..137cab9f79 100644 --- a/examples/hostmount-writeable-overlay.yml +++ b/examples/hostmount-writeable-overlay.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/influxdb-os.yml b/examples/influxdb-os.yml index 9fc03007bb..8bb5e1e71e 100644 --- a/examples/influxdb-os.yml +++ b/examples/influxdb-os.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/logging.yml b/examples/logging.yml index 62d7a8367c..3f5fc06134 100644 --- a/examples/logging.yml +++ b/examples/logging.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/minimal.yml b/examples/minimal.yml index 48ce438bd1..25c14a6993 100644 --- a/examples/minimal.yml +++ b/examples/minimal.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/node_exporter.yml b/examples/node_exporter.yml index a05c14e040..19db61d518 100644 --- a/examples/node_exporter.yml +++ b/examples/node_exporter.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/examples/openstack.yml b/examples/openstack.yml index 73cdc87679..100efd8d43 100644 --- a/examples/openstack.yml +++ b/examples/openstack.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/packet.yml b/examples/packet.yml index 6876b42560..e58cb46f7e 100644 --- a/examples/packet.yml +++ b/examples/packet.yml @@ -3,7 +3,7 @@ kernel: cmdline: console=ttyS1 ucode: intel-ucode.cpio init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/redis-os.yml b/examples/redis-os.yml index 91110bbb98..a0deb16fc7 100644 --- a/examples/redis-os.yml +++ b/examples/redis-os.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/rt-for-vmware.yml b/examples/rt-for-vmware.yml index ebe292d55f..2f0a005abd 100644 --- a/examples/rt-for-vmware.yml +++ b/examples/rt-for-vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.28-rt cmdline: "console=tty0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/scaleway.yml b/examples/scaleway.yml index 90562e5000..1af1b773ba 100644 --- a/examples/scaleway.yml +++ b/examples/scaleway.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0 root=/dev/vda" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/sshd.yml b/examples/sshd.yml index 7896ba77e2..c21b38f741 100644 --- a/examples/sshd.yml +++ b/examples/sshd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/static-ip.yml b/examples/static-ip.yml index 67c5cb1d3b..f5faad06d1 100644 --- a/examples/static-ip.yml +++ b/examples/static-ip.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/swap.yml b/examples/swap.yml index 47e5e45b56..aa68ea2d02 100644 --- a/examples/swap.yml +++ b/examples/swap.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/tpm.yml b/examples/tpm.yml index dd6134a3b4..98e0a3a97a 100644 --- a/examples/tpm.yml +++ b/examples/tpm.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vmware.yml b/examples/vmware.yml index b797b2d7da..7f7d8cdc2a 100644 --- a/examples/vmware.yml +++ b/examples/vmware.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/vpnkit-forwarder.yml b/examples/vpnkit-forwarder.yml index 3453c095f9..b166c734b3 100644 --- a/examples/vpnkit-forwarder.yml +++ b/examples/vpnkit-forwarder.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vsudd-containerd.yml b/examples/vsudd-containerd.yml index 8e650eb3be..fc3116f785 100644 --- a/examples/vsudd-containerd.yml +++ b/examples/vsudd-containerd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/examples/vultr.yml b/examples/vultr.yml index 17ba4f7fb5..aeaf92019b 100644 --- a/examples/vultr.yml +++ b/examples/vultr.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/examples/wireguard.yml b/examples/wireguard.yml index a93f59faec..6463ba65d2 100644 --- a/examples/wireguard.yml +++ b/examples/wireguard.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/linuxkit.yml b/linuxkit.yml index cf62487023..a9b5f6cc89 100644 --- a/linuxkit.yml +++ b/linuxkit.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=tty0 console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/clear-containers/clear-containers.yml b/projects/clear-containers/clear-containers.yml index 88ea66aecf..c87a0d3118 100644 --- a/projects/clear-containers/clear-containers.yml +++ b/projects/clear-containers/clear-containers.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-clear-containers:4.9.x cmdline: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k panic=1 console=hvc0 console=hvc1 initcall_debug iommu=off quiet cryptomgr.notests page_poison=on" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c onboot: - name: sysctl image: mobylinux/sysctl:2cf2f9d5b4d314ba1bfc22b2fe931924af666d8c diff --git a/projects/compose/compose-dynamic.yml b/projects/compose/compose-dynamic.yml index fe2b7a6c44..64c1059bbc 100644 --- a/projects/compose/compose-dynamic.yml +++ b/projects/compose/compose-dynamic.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/compose/compose-static.yml b/projects/compose/compose-static.yml index 4af1877b81..bbadfd7a3d 100644 --- a/projects/compose/compose-static.yml +++ b/projects/compose/compose-static.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/ima-namespace/ima-namespace.yml b/projects/ima-namespace/ima-namespace.yml index 2f580ed7d4..b338ee6cea 100644 --- a/projects/ima-namespace/ima-namespace.yml +++ b/projects/ima-namespace/ima-namespace.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel-ima:4.11.1-186dd3605ee7b23214850142f8f02b4679dbd148 cmdline: "console=ttyS0 console=tty0 page_poison=1 ima_appraise=enforce_ns" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/landlock/landlock.yml b/projects/landlock/landlock.yml index 129606a460..1c3b04d033 100644 --- a/projects/landlock/landlock.yml +++ b/projects/landlock/landlock.yml @@ -2,7 +2,7 @@ kernel: image: mobylinux/kernel-landlock:4.9.x cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - mobylinux/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 - mobylinux/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b - mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935 diff --git a/projects/memorizer/memorizer.yml b/projects/memorizer/memorizer.yml index 368511dbe7..b8df900bb6 100644 --- a/projects/memorizer/memorizer.yml +++ b/projects/memorizer/memorizer.yml @@ -2,7 +2,7 @@ kernel: image: "linuxkitprojects/kernel-memorizer:4.10_dbg" cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/miragesdk/examples/fdd.yml b/projects/miragesdk/examples/fdd.yml index 5e3ec78f87..79b505cd84 100644 --- a/projects/miragesdk/examples/fdd.yml +++ b/projects/miragesdk/examples/fdd.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.9.34 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index 77b48ff2ed..837c08d738 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/projects/okernel/examples/okernel_simple.yaml b/projects/okernel/examples/okernel_simple.yaml index 3b5173df51..e8438d38b7 100644 --- a/projects/okernel/examples/okernel_simple.yaml +++ b/projects/okernel/examples/okernel_simple.yaml @@ -2,7 +2,7 @@ kernel: image: okernel:latest cmdline: "console=tty0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/projects/shiftfs/shiftfs.yml b/projects/shiftfs/shiftfs.yml index 27963ea1a1..f3b6dbcade 100644 --- a/projects/shiftfs/shiftfs.yml +++ b/projects/shiftfs/shiftfs.yml @@ -2,7 +2,7 @@ kernel: image: linuxkitprojects/kernel-shiftfs:4.11.4-881a041fc14bd95814cf140b5e98d97dd65160b5 cmdline: "console=ttyS0 console=tty0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/src/cmd/linuxkit/moby/linuxkit.go b/src/cmd/linuxkit/moby/linuxkit.go index 38df6c8f0c..5d7a58235d 100644 --- a/src/cmd/linuxkit/moby/linuxkit.go +++ b/src/cmd/linuxkit/moby/linuxkit.go @@ -17,7 +17,7 @@ kernel: image: linuxkit/kernel:4.9.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/000_build/000_formats/test.yml b/test/cases/000_build/000_formats/test.yml index abacb6c0e9..ea1290cb4c 100644 --- a/test/cases/000_build/000_formats/test.yml +++ b/test/cases/000_build/000_formats/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/000_build/010_reproducible/test.yml b/test/cases/000_build/010_reproducible/test.yml index a9d3d8662b..a9051f70f9 100644 --- a/test/cases/000_build/010_reproducible/test.yml +++ b/test/cases/000_build/010_reproducible/test.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f diff --git a/test/cases/000_build/020_binds/test.yml b/test/cases/000_build/020_binds/test.yml index e4783de7c3..a34cf171c6 100644 --- a/test/cases/000_build/020_binds/test.yml +++ b/test/cases/000_build/020_binds/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.30 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:f79954950022fea76b8b6f10de58cb48e4fb3878 onboot: - name: mount diff --git a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml index 385c1dccc6..bb3a132b3f 100644 --- a/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/000_qemu/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml index 385c1dccc6..bb3a132b3f 100644 --- a/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/000_qemu/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml index fd705c27e9..4274ff2d22 100644 --- a/test/cases/010_platforms/000_qemu/010_run_iso/test.yml +++ b/test/cases/010_platforms/000_qemu/010_run_iso/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/000_qemu/020_run_efi/test.yml +++ b/test/cases/010_platforms/000_qemu/020_run_efi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/030_run_qcow_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml +++ b/test/cases/010_platforms/000_qemu/040_run_raw_bios/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/000_qemu/050_run_aws/test.yml +++ b/test/cases/010_platforms/000_qemu/050_run_aws/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/000_qemu/100_container/test.yml b/test/cases/010_platforms/000_qemu/100_container/test.yml index b6664930dd..8fd864226c 100644 --- a/test/cases/010_platforms/000_qemu/100_container/test.yml +++ b/test/cases/010_platforms/000_qemu/100_container/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml +++ b/test/cases/010_platforms/010_hyperkit/000_run_kernel+initrd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml +++ b/test/cases/010_platforms/010_hyperkit/005_run_kernel+squashfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml index d46617e62d..938481b1ac 100644 --- a/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml +++ b/test/cases/010_platforms/010_hyperkit/010_acpi/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f services: diff --git a/test/cases/010_platforms/110_gcp/000_run/test.yml b/test/cases/010_platforms/110_gcp/000_run/test.yml index 5ba1c586a5..85ce8ec3b0 100644 --- a/test/cases/010_platforms/110_gcp/000_run/test.yml +++ b/test/cases/010_platforms/110_gcp/000_run/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/020_kernel/002_config_4.14.x/test.yml b/test/cases/020_kernel/002_config_4.14.x/test.yml index aa2b99b926..1b62b4c906 100644 --- a/test/cases/020_kernel/002_config_4.14.x/test.yml +++ b/test/cases/020_kernel/002_config_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/005_config_4.19.x/test.yml b/test/cases/020_kernel/005_config_4.19.x/test.yml index 8c3c6cfdef..ea21fce5f6 100644 --- a/test/cases/020_kernel/005_config_4.19.x/test.yml +++ b/test/cases/020_kernel/005_config_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/011_config_5.4.x/test.yml b/test/cases/020_kernel/011_config_5.4.x/test.yml index 5a52b4494f..c1e38fbfbf 100644 --- a/test/cases/020_kernel/011_config_5.4.x/test.yml +++ b/test/cases/020_kernel/011_config_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/012_config_5.6.x/test.yml b/test/cases/020_kernel/012_config_5.6.x/test.yml index a1d019719b..c3211df8c9 100644 --- a/test/cases/020_kernel/012_config_5.6.x/test.yml +++ b/test/cases/020_kernel/012_config_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check-kernel-config diff --git a/test/cases/020_kernel/102_kmod_4.14.x/test.yml b/test/cases/020_kernel/102_kmod_4.14.x/test.yml index 4e64b37cb0..a455ec7b5c 100644 --- a/test/cases/020_kernel/102_kmod_4.14.x/test.yml +++ b/test/cases/020_kernel/102_kmod_4.14.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.14.179 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/105_kmod_4.19.x/test.yml b/test/cases/020_kernel/105_kmod_4.19.x/test.yml index a05d5480cf..fb12af2dac 100644 --- a/test/cases/020_kernel/105_kmod_4.19.x/test.yml +++ b/test/cases/020_kernel/105_kmod_4.19.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:4.19.121 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/111_kmod_5.4.x/test.yml b/test/cases/020_kernel/111_kmod_5.4.x/test.yml index 5c6b00528b..4a1267b4a6 100644 --- a/test/cases/020_kernel/111_kmod_5.4.x/test.yml +++ b/test/cases/020_kernel/111_kmod_5.4.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/112_kmod_5.6.x/test.yml b/test/cases/020_kernel/112_kmod_5.6.x/test.yml index 56e27af488..62a71c7854 100644 --- a/test/cases/020_kernel/112_kmod_5.6.x/test.yml +++ b/test/cases/020_kernel/112_kmod_5.6.x/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.6.11 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: check diff --git a/test/cases/020_kernel/200_namespace/common.yml b/test/cases/020_kernel/200_namespace/common.yml index 81579ddb3e..40f13ae619 100644 --- a/test/cases/020_kernel/200_namespace/common.yml +++ b/test/cases/020_kernel/200_namespace/common.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 trust: org: diff --git a/test/cases/030_security/000_docker-bench/test.yml b/test/cases/030_security/000_docker-bench/test.yml index 678a0a6021..0b737962f3 100644 --- a/test/cases/030_security/000_docker-bench/test.yml +++ b/test/cases/030_security/000_docker-bench/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/030_security/010_ports/test.yml b/test/cases/030_security/010_ports/test.yml index 30151f5ab7..13eceec7e2 100644 --- a/test/cases/030_security/010_ports/test.yml +++ b/test/cases/030_security/010_ports/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 page_poison=1" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: test diff --git a/test/cases/040_packages/002_binfmt/test.yml b/test/cases/040_packages/002_binfmt/test.yml index 3c120c60d0..faab0d5078 100644 --- a/test/cases/040_packages/002_binfmt/test.yml +++ b/test/cases/040_packages/002_binfmt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: binfmt diff --git a/test/cases/040_packages/002_bpftrace/test.yml b/test/cases/040_packages/002_bpftrace/test.yml index ac5c81f8c7..56070c01a7 100644 --- a/test/cases/040_packages/002_bpftrace/test.yml +++ b/test/cases/040_packages/002_bpftrace/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/bpftrace:v0.8 onboot: diff --git a/test/cases/040_packages/003_ca-certificates/test.yml b/test/cases/040_packages/003_ca-certificates/test.yml index a3c72cf27a..0f73cc5b4d 100644 --- a/test/cases/040_packages/003_ca-certificates/test.yml +++ b/test/cases/040_packages/003_ca-certificates/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/ca-certificates:v0.8 onboot: diff --git a/test/cases/040_packages/003_containerd/test.yml b/test/cases/040_packages/003_containerd/test.yml index 6a3ac00a70..b1aeb01598 100644 --- a/test/cases/040_packages/003_containerd/test.yml +++ b/test/cases/040_packages/003_containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/004_dhcpcd/test.yml b/test/cases/040_packages/004_dhcpcd/test.yml index 61f620b71c..f2e9ae5f62 100644 --- a/test/cases/040_packages/004_dhcpcd/test.yml +++ b/test/cases/040_packages/004_dhcpcd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: dhcpcd diff --git a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml index 1f5cb131d6..a2854cf9dc 100644 --- a/test/cases/040_packages/004_dm-crypt/000_simple/test.yml +++ b/test/cases/040_packages/004_dm-crypt/000_simple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml index b4a73daf98..de6f1f0b2c 100644 --- a/test/cases/040_packages/004_dm-crypt/001_luks/test.yml +++ b/test/cases/040_packages/004_dm-crypt/001_luks/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/004_dm-crypt/002_key/test.yml b/test/cases/040_packages/004_dm-crypt/002_key/test.yml index 5313a248ee..ef21aa4b7c 100644 --- a/test/cases/040_packages/004_dm-crypt/002_key/test.yml +++ b/test/cases/040_packages/004_dm-crypt/002_key/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: dm-crypt diff --git a/test/cases/040_packages/005_extend/000_ext4/test-create.yml b/test/cases/040_packages/005_extend/000_ext4/test-create.yml index a30aa1bb7c..fce0b902ce 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test-create.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/000_ext4/test.yml b/test/cases/040_packages/005_extend/000_ext4/test.yml index f7c20330f0..17ca054b25 100644 --- a/test/cases/040_packages/005_extend/000_ext4/test.yml +++ b/test/cases/040_packages/005_extend/000_ext4/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml index fb44cfed5c..20ba568182 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test-create.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/001_btrfs/test.yml b/test/cases/040_packages/005_extend/001_btrfs/test.yml index c3b6caa2ce..d329d40451 100644 --- a/test/cases/040_packages/005_extend/001_btrfs/test.yml +++ b/test/cases/040_packages/005_extend/001_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/005_extend/002_xfs/test-create.yml b/test/cases/040_packages/005_extend/002_xfs/test-create.yml index 1bf94fb08d..5e75f515fb 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test-create.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/002_xfs/test.yml b/test/cases/040_packages/005_extend/002_xfs/test.yml index f197eaa438..2ca0b95dce 100644 --- a/test/cases/040_packages/005_extend/002_xfs/test.yml +++ b/test/cases/040_packages/005_extend/002_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/005_extend/003_gpt/test-create.yml b/test/cases/040_packages/005_extend/003_gpt/test-create.yml index c95adfdca1..af07128ab5 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test-create.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test-create.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/005_extend/003_gpt/test.yml b/test/cases/040_packages/005_extend/003_gpt/test.yml index f7c20330f0..17ca054b25 100644 --- a/test/cases/040_packages/005_extend/003_gpt/test.yml +++ b/test/cases/040_packages/005_extend/003_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: extend diff --git a/test/cases/040_packages/006_format_mount/000_auto/test.yml b/test/cases/040_packages/006_format_mount/000_auto/test.yml index 52d1d64000..a34218f40c 100644 --- a/test/cases/040_packages/006_format_mount/000_auto/test.yml +++ b/test/cases/040_packages/006_format_mount/000_auto/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/001_by_label/test.yml b/test/cases/040_packages/006_format_mount/001_by_label/test.yml index d9b78fa331..f4705e0153 100644 --- a/test/cases/040_packages/006_format_mount/001_by_label/test.yml +++ b/test/cases/040_packages/006_format_mount/001_by_label/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in index b4a24dba26..c5eb4b34b4 100644 --- a/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in +++ b/test/cases/040_packages/006_format_mount/002_by_name/test.yml.in @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml index 9e6a4f267e..27c345b706 100644 --- a/test/cases/040_packages/006_format_mount/003_btrfs/test.yml +++ b/test/cases/040_packages/006_format_mount/003_btrfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: modprobe diff --git a/test/cases/040_packages/006_format_mount/004_xfs/test.yml b/test/cases/040_packages/006_format_mount/004_xfs/test.yml index a1489ca388..69841d8dbe 100644 --- a/test/cases/040_packages/006_format_mount/004_xfs/test.yml +++ b/test/cases/040_packages/006_format_mount/004_xfs/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml index e525994eb2..4e6e7df4b5 100644 --- a/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml +++ b/test/cases/040_packages/006_format_mount/005_by_device_force/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/006_gpt/test.yml b/test/cases/040_packages/006_format_mount/006_gpt/test.yml index c34a338302..034182cd48 100644 --- a/test/cases/040_packages/006_format_mount/006_gpt/test.yml +++ b/test/cases/040_packages/006_format_mount/006_gpt/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/006_format_mount/010_multiple/test.yml b/test/cases/040_packages/006_format_mount/010_multiple/test.yml index 75d14907c6..e17929ca01 100644 --- a/test/cases/040_packages/006_format_mount/010_multiple/test.yml +++ b/test/cases/040_packages/006_format_mount/010_multiple/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: format diff --git a/test/cases/040_packages/007_getty-containerd/test.yml b/test/cases/040_packages/007_getty-containerd/test.yml index 34bd849139..506ea9cecf 100644 --- a/test/cases/040_packages/007_getty-containerd/test.yml +++ b/test/cases/040_packages/007_getty-containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/008_metadata/000_cidata/test.yml b/test/cases/040_packages/008_metadata/000_cidata/test.yml index 9cbd081d47..b2bde4390e 100644 --- a/test/cases/040_packages/008_metadata/000_cidata/test.yml +++ b/test/cases/040_packages/008_metadata/000_cidata/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: metadata diff --git a/test/cases/040_packages/012_losetup/test.yml b/test/cases/040_packages/012_losetup/test.yml index 27182ebff4..6b053975f1 100644 --- a/test/cases/040_packages/012_losetup/test.yml +++ b/test/cases/040_packages/012_losetup/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: losetup diff --git a/test/cases/040_packages/013_mkimage/mkimage.yml b/test/cases/040_packages/013_mkimage/mkimage.yml index 1186646176..718548203d 100644 --- a/test/cases/040_packages/013_mkimage/mkimage.yml +++ b/test/cases/040_packages/013_mkimage/mkimage.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: mkimage diff --git a/test/cases/040_packages/013_mkimage/run.yml b/test/cases/040_packages/013_mkimage/run.yml index fc49df8e63..8cf2ca4767 100644 --- a/test/cases/040_packages/013_mkimage/run.yml +++ b/test/cases/040_packages/013_mkimage/run.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: poweroff diff --git a/test/cases/040_packages/019_sysctl/test.yml b/test/cases/040_packages/019_sysctl/test.yml index 99a70755ae..d9be465dc2 100644 --- a/test/cases/040_packages/019_sysctl/test.yml +++ b/test/cases/040_packages/019_sysctl/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: sysctl diff --git a/test/cases/040_packages/020_init_containerd/test.yml b/test/cases/040_packages/020_init_containerd/test.yml index 458889997f..0c7279b8e7 100644 --- a/test/cases/040_packages/020_init_containerd/test.yml +++ b/test/cases/040_packages/020_init_containerd/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:946ebf1d74bc96da8d4b90c75ae0dd8a8e962a6b + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/023_wireguard/test.yml b/test/cases/040_packages/023_wireguard/test.yml index ee8ba8b4e7..7f7775e50c 100644 --- a/test/cases/040_packages/023_wireguard/test.yml +++ b/test/cases/040_packages/023_wireguard/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/030_logwrite/test.yml b/test/cases/040_packages/030_logwrite/test.yml index 7055590030..877a2b7468 100644 --- a/test/cases/040_packages/030_logwrite/test.yml +++ b/test/cases/040_packages/030_logwrite/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/031_kmsg/test.yml b/test/cases/040_packages/031_kmsg/test.yml index 23575c380a..09c849b01d 100644 --- a/test/cases/040_packages/031_kmsg/test.yml +++ b/test/cases/040_packages/031_kmsg/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f - linuxkit/ca-certificates:v0.8 diff --git a/test/cases/040_packages/032_bcc/test.yml b/test/cases/040_packages/032_bcc/test.yml index 811c246323..bb7a29d8aa 100644 --- a/test/cases/040_packages/032_bcc/test.yml +++ b/test/cases/040_packages/032_bcc/test.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0 console=ttyAMA0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/kernel-bcc:5.4.39 onboot: diff --git a/test/hack/test-ltp.yml b/test/hack/test-ltp.yml index 6599afa5cf..328ea15f6f 100644 --- a/test/hack/test-ltp.yml +++ b/test/hack/test-ltp.yml @@ -2,7 +2,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/hack/test.yml b/test/hack/test.yml index caa11e5af3..c684895dfc 100644 --- a/test/hack/test.yml +++ b/test/hack/test.yml @@ -4,7 +4,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 - linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f onboot: diff --git a/test/pkg/ns/template.yml b/test/pkg/ns/template.yml index f9a5f817fa..bf721fd04a 100644 --- a/test/pkg/ns/template.yml +++ b/test/pkg/ns/template.yml @@ -3,7 +3,7 @@ kernel: image: linuxkit/kernel:5.4.39 cmdline: "console=ttyS0" init: - - linuxkit/init:4f6508f4f35b134dda3807bb5d75c117c193a86a + - linuxkit/init:a68f9fa0c1d9dbfc9c23663749a0b7ac510cbe1c - linuxkit/runc:v0.8 onboot: - name: test-ns From c175270f67af508eeb5851a96ec647a37b51bf8e Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Wed, 11 Nov 2020 21:37:34 +0200 Subject: [PATCH 17/20] describe how to sign tags manually Signed-off-by: Avi Deitcher Signed-off-by: Birol Bilgin --- docs/packages.md | 246 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) diff --git a/docs/packages.md b/docs/packages.md index 90fa09866d..1579253482 100644 --- a/docs/packages.md +++ b/docs/packages.md @@ -172,6 +172,252 @@ pkg: content-trust-passphrase-command: "lpass show --password" ``` +#### Signing Manually + +If, for whatever reason, you want to sign an individual tag manually, whether the index (a.k.a. "multi-arch manifest") or the architecture-specific manifest, do the following: + +1. Make sure you have ready your credentials: + * docker hub login and passphrase + * docker notary signing key passphrase +1. Get the following information: + * the name of the image repository you want to sign, including the registry host but **not** including the tag, e.g. `linuxkit/containerd` + * the tag of the image you want to sign, e.g. `a4aa19c608556f7d786852557c36136255220c1f` or `v5.0` + * the size of the image you want to sign in bytes, e.g. `1052`. See below for information on how to get this. + * the hash of the manifest or index to which the tag points, **not** including the `sha256:` leader, e.g. `66b3d74aeb855f393ddb85e7371a00d5f7994cc26b425825df2ce910583d74dc`. See below for information on how to get this. +1. Set env vars with the following: + * `IMAGE`: name of the image, e.g. `IMAGE=docker.io/linuxkit/containerd` + * `TAG`: the tag you want to sign. It could be a tag pointing at a multi-arch manifest or tag pointing at an individual architecture's manifest, e.g. `TAG=a4aa19c608556f7d786852557c36136255220c1f` or `TAG=a4aa19c608556f7d786852557c36136255220c1f-s390x` + * `SIZE`: size of the pointed-at manifest or index, e.g. `SIZE=1052` + * `HASH`: sha256 hash of the pointed-at manifest or index, e.g. `HASH=66b3d74aeb855f393ddb85e7371a00d5f7994cc26b425825df2ce910583d74dc` +1. Run the command: `notary -s https://notary.docker.io -d ~/.docker/trust addhash -p $IMAGE $TAG $SIZE --sha256 $HASH -r targets/releases` + +For example: + +```console +IMAGE=docker.io/linuxkit/containerd +TAG=a4aa19c608556f7d786852557c36136255220c1f +SIZE=1052 +HASH=66b3d74aeb855f393ddb85e7371a00d5f7994cc26b425825df2ce910583d74dc +notary -s https://notary.docker.io -d ~/.docker/trust addhash -p $IMAGE $TAG $SIZE --sha256 $HASH -r targets/releases +``` + +##### Getting Size and Hash + +There are several ways to get the size and hash of a particular manifest or index. Remember that you are signing a +tag, so you are looking for the size and hash of whatever the tag points to, manifest or index. + +* `docker push` +* script +* `manifest-tool` +* `ocidist` + +###### docker push + +If you pushed the image tag using `docker push`, the very last line of output will give you the hash and size: + +```console +$ docker push linuxkit/containerd:a4aa19c608556f7d786852557c36136255220c1f +The push refers to repository [docker.io/linuxkit/containerd] +fce5742422e4: Layer already exists +48a02e7b3096: Layer already exists +4381f8a59bb1: Layer already exists +c0328291406b: Layer already exists +79053b1996f5: Layer already exists +a4aa19c608556f7d786852557c36136255220c1f: digest: sha256:164f6c27410f145b479cdce1ed08e694c9b3d1e3e320c94d0e1ece9755043ea8 size: 1357 +``` + +The first part is the tag you pushed, followed by the keyword `digest`, then the hash, then the size. + +##### script + +The following script command will provide the output for docker hub. Set the `IMAGE` name and `TAG` +environment variables. + +```console +IMAGE=linuxkit/containerd +TAG=v0.8-amd64 +jwt=$(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${IMAGE}:pull" | jq -r .token) +curl https://index.docker.io/v2/linuxkit/containerd/manifests/${TAG} -H "Authorization: Bearer ${jwt}" -H "Accept: application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json" -D /dev/stdout -o /dev/null -s +``` + +##### manifest-tool + +The [manifest-tool](https://github.com/estesp/manifest-tool) allows you to inspect manifests, including +both OCI indexes, a.k.a. multi-arch manifests, and simple manifests. + +If you inspect the actual tag, you will get just the hash, not the size. +If you inspect an index that includes a manifest that you want, you will get the hash and size. + +For example, inspecting just a single arch manifest gives us the hash on the second line, but not the +size: + +```console +$ manifest-tool inspect linuxkit/containerd:v0.8-amd64 +Name: linuxkit/containerd:v0.8-amd64 (Type: application/vnd.docker.distribution.manifest.v2+json) + Digest: sha256:0dc4f37966e23c0dffa6961119f29100c6d181b221e748c4688a280c08ab52a8 + OS: linux + Arch: amd64 + # Layers: 5 + layer 1: digest = sha256:319073c03e01a960e61913b0e05b4e0094061726f6959732371a1496098c0980 + layer 2: digest = sha256:85521c11021aed78da3b61193b3e2cd1f316040eb08744f684cb98fa8ba35dc3 + layer 3: digest = sha256:f29bf65845868b4b2adccc661040b939e4119ca5b5cb34cb0583b8b4e279bcc9 + layer 4: digest = sha256:95c51328f79f6be125241ba10488e8962bdfd807fe93fc5d4d990eea7ac065e2 + layer 5: digest = sha256:794ca16dd5d22f1ccb5f58dea0ef9cb0c95d957ed33af5c4ab008cbdd30c359e +``` + +While inspecting the index that includes the above tag, gives us the hash but not the size of the +index, but finding the right entry, for example the first one is `amd64`, gives us the size as +`Mfst Length: 1357`: + +```console +$ manifest-tool inspect linuxkit/containerd:v0.8 +Name: linuxkit/containerd:v0.8 (Type: application/vnd.docker.distribution.manifest.list.v2+json) +Digest: sha256:247e1eb712c2f5e9d80bb1a9ddf9bb5479b3f785a7e0dd4a8844732bbaa96851 + * Contains 3 manifest references: +1 Mfst Type: application/vnd.docker.distribution.manifest.v2+json +1 Digest: sha256:0dc4f37966e23c0dffa6961119f29100c6d181b221e748c4688a280c08ab52a8 +1 Mfst Length: 1357 +1 Platform: +1 - OS: linux +1 - OS Vers: +1 - OS Feat: [] +1 - Arch: amd64 +1 - Variant: +1 # Layers: 5 + layer 1: digest = sha256:319073c03e01a960e61913b0e05b4e0094061726f6959732371a1496098c0980 + layer 2: digest = sha256:85521c11021aed78da3b61193b3e2cd1f316040eb08744f684cb98fa8ba35dc3 + layer 3: digest = sha256:f29bf65845868b4b2adccc661040b939e4119ca5b5cb34cb0583b8b4e279bcc9 + layer 4: digest = sha256:95c51328f79f6be125241ba10488e8962bdfd807fe93fc5d4d990eea7ac065e2 + layer 5: digest = sha256:794ca16dd5d22f1ccb5f58dea0ef9cb0c95d957ed33af5c4ab008cbdd30c359e + +2 Mfst Type: application/vnd.docker.distribution.manifest.v2+json +2 Digest: sha256:febd923be587826c64db19c429f92a369d6e41d8abb715ff30643250ceafa621 +2 Mfst Length: 1357 +2 Platform: +2 - OS: linux +2 - OS Vers: +2 - OS Feat: [] +2 - Arch: arm64 +2 - Variant: +2 # Layers: 5 + layer 1: digest = sha256:c35625c316366a48ec51192731e4155191b39fac7848e1b41fa46be1de9d11dc + layer 2: digest = sha256:a73cb03ae4fe7b79bf9ec202ee734a55f962a597b93e9a9625c64e9f2be9e78f + layer 3: digest = sha256:75b2023060fd85e40f4eed9fc5fe60c5b1866d909fc9ea783a21318ec2437e96 + layer 4: digest = sha256:413204d4c4ee875fd84dd93799ed1346cfb15e02a508b6306ea7da1a160babc3 + layer 5: digest = sha256:cf2293c110f0718e58e01ff4cbafa53eadde280999902fcdcd57269e8ba48339 + +3 Mfst Type: application/vnd.docker.distribution.manifest.v2+json +3 Digest: sha256:b6adad183487d969059b3badeb5dce032bb449f61607eb024d91cfeabcaf0e57 +3 Mfst Length: 1357 +3 Platform: +3 - OS: linux +3 - OS Vers: +3 - OS Feat: [] +3 - Arch: s390x +3 - Variant: +3 # Layers: 5 + layer 1: digest = sha256:16c1054185680ee839fa57dff29f412c179f1739191c12d33ab59bceca28a8ac + layer 2: digest = sha256:e38fe65829ed75127337f18dc2a641e2e9f6c2859a314cf5ac1b7d5022150e26 + layer 3: digest = sha256:f2e84a29733f5f17cc860468b94eeeebf378d2a8af9bfc468427b1da430fe927 + layer 4: digest = sha256:b38f9350a90499ce01e7704a58b52c90ee28c5562379f7096ce930b5fea160be + layer 5: digest = sha256:cc86a47d79015d074b41a4a3f0918e98dfb13f2fc6ef8def180a81fd36ae2544 +``` + +##### ocidist + +[ocidist](https://github.com/deitch/ocidist) is a simple utility to inspect or pull images, manifests, +indexes and individual blobs. If you call `ocidist manifest` and pass it the `--detail` flag, it will +report the hash and size. + +For an index: + +```console +$ ocidist manifest docker.io/linuxkit/containerd:v0.8 --detail +2020/11/12 11:00:03 ref name.Tag{Repository:name.Repository{Registry:name.Registry{insecure:false, registry:"index.docker.io"}, repository:"linuxkit/containerd"}, tag:"v0.8", original:"docker.io/linuxkit/containerd:v0.8"} +2020/11/12 11:00:03 advanced API +2020/11/12 11:00:06 referenced manifest hash sha256:247e1eb712c2f5e9d80bb1a9ddf9bb5479b3f785a7e0dd4a8844732bbaa96851 size 1052 +{ + "schemaVersion": 2, + "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", + "manifests": [ + { + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "size": 1357, + "digest": "sha256:0dc4f37966e23c0dffa6961119f29100c6d181b221e748c4688a280c08ab52a8", + "platform": { + "architecture": "amd64", + "os": "linux" + } + }, + { + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "size": 1357, + "digest": "sha256:febd923be587826c64db19c429f92a369d6e41d8abb715ff30643250ceafa621", + "platform": { + "architecture": "arm64", + "os": "linux" + } + }, + { + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "size": 1357, + "digest": "sha256:b6adad183487d969059b3badeb5dce032bb449f61607eb024d91cfeabcaf0e57", + "platform": { + "architecture": "s390x", + "os": "linux" + } + } + ] +} +``` + +For a single manifest: + +```console +$ ocidist manifest docker.io/linuxkit/containerd:v0.8-amd64 --detail +2020/11/12 10:59:08 ref name.Tag{Repository:name.Repository{Registry:name.Registry{insecure:false, registry:"index.docker.io"}, repository:"linuxkit/containerd"}, tag:"v0.8-amd64", original:"docker.io/linuxkit/containerd:v0.8-amd64"} +2020/11/12 10:59:08 advanced API +2020/11/12 10:59:11 referenced manifest hash sha256:0dc4f37966e23c0dffa6961119f29100c6d181b221e748c4688a280c08ab52a8 size 1357 +{ + "schemaVersion": 2, + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "config": { + "mediaType": "application/vnd.docker.container.image.v1+json", + "size": 1973, + "digest": "sha256:b11103cf6c84fc3a2968d89e9d6fd7ce9e427380098c17828e3bda27de61ed6a" + }, + "layers": [ + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 41779632, + "digest": "sha256:319073c03e01a960e61913b0e05b4e0094061726f6959732371a1496098c0980" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 328, + "digest": "sha256:85521c11021aed78da3b61193b3e2cd1f316040eb08744f684cb98fa8ba35dc3" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 176, + "digest": "sha256:f29bf65845868b4b2adccc661040b939e4119ca5b5cb34cb0583b8b4e279bcc9" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 202, + "digest": "sha256:95c51328f79f6be125241ba10488e8962bdfd807fe93fc5d4d990eea7ac065e2" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 300, + "digest": "sha256:794ca16dd5d22f1ccb5f58dea0ef9cb0c95d957ed33af5c4ab008cbdd30c359e" + } + ] +} +``` + + + ### Build packages as a developer If you want to develop packages or test them locally, it is best to From 535bba8ff0cc683de4639baf6b65f5cff5b5e99c Mon Sep 17 00:00:00 2001 From: Birol Bilgin Date: Thu, 19 Nov 2020 10:20:52 +0100 Subject: [PATCH 18/20] removed log line in Probe func switch to UserData for probing cleaned up base64 decoding Signed-off-by: Birol Bilgin --- pkg/metadata/main.go | 2 +- pkg/metadata/provider_vmware.go | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/metadata/main.go b/pkg/metadata/main.go index 4bacbf6403..c1f2d0c0f2 100644 --- a/pkg/metadata/main.go +++ b/pkg/metadata/main.go @@ -78,7 +78,7 @@ func main() { log.SetLevel(log.DebugLevel) } - providers := []string{"aws", "gcp", "hetzner", "openstack", "scaleway", "vultr", "digitalocean", "packet", "cdrom", "vmware"} + providers := []string{"aws", "gcp", "hetzner", "openstack", "scaleway", "vultr", "digitalocean", "packet", "vmware", "cdrom"} args := flag.Args() if len(args) > 0 { providers = args diff --git a/pkg/metadata/provider_vmware.go b/pkg/metadata/provider_vmware.go index 006f78a8ef..b0d5ff3d29 100644 --- a/pkg/metadata/provider_vmware.go +++ b/pkg/metadata/provider_vmware.go @@ -37,13 +37,12 @@ func (p *ProviderVMware) String() string { func (p *ProviderVMware) Probe() bool { c, err := exec.LookPath("vmware-rpctool") if err != nil { - log.Debugf("Look for vmware-rcptool failed %v", err) return false } p.cmd = c - b, err := p.vmwareGet(guestMetaData) + b, err := p.vmwareGet(guestUserData) return (err == nil) && len(b) > 0 && string(b) != " " && string(b) != "---" } @@ -91,15 +90,13 @@ func (p *ProviderVMware) vmwareGet(name string) ([]byte, error) { return nil, err } - //out = bytes.TrimSuffix(out, []byte("\n")) - switch strings.TrimSuffix(string(enc), "\n") { case " ": return bytes.TrimSuffix(out, []byte("\n")), nil case "base64": - dst := make([]byte, base64.StdEncoding.DecodedLen(len(out))) + r := base64.NewDecoder(base64.StdEncoding, bytes.NewBuffer(out)) - _, err = base64.StdEncoding.Decode(dst, out) + dst, err := ioutil.ReadAll(r) if err != nil { log.Debugf("Decoding base64 of '%s' failed %v", name, err) return nil, err From 76cc6e954fe3ea13dbe827d9484b297a3888dc8a Mon Sep 17 00:00:00 2001 From: Birol Bilgin Date: Tue, 5 Jan 2021 22:27:58 +0100 Subject: [PATCH 19/20] set cdrom as last cdrom provider Signed-off-by: Birol Bilgin --- pkg/metadata/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/metadata/main.go b/pkg/metadata/main.go index c1f2d0c0f2..7875c3e6ef 100644 --- a/pkg/metadata/main.go +++ b/pkg/metadata/main.go @@ -101,10 +101,10 @@ func main() { netProviders = append(netProviders, NewVultr()) case p == "digitalocean": netProviders = append(netProviders, NewDigitalOcean()) - case p == "cdrom": - cdromProviders = ListCDROMs() case p == "vmware": cdromProviders = append(cdromProviders, NewVMware()) + case p == "cdrom": + cdromProviders = append(cdromProviders, ListCDROMs()...) case strings.HasPrefix(p, "file="): fileProviders = append(fileProviders, fileProvider(p[5:])) default: From 1600a2a7a5d9010a54d200fc0787b6c4c6ed2ec7 Mon Sep 17 00:00:00 2001 From: Robert Kaelin Date: Thu, 20 May 2021 11:09:02 +0200 Subject: [PATCH 20/20] Removed vmware-rpctool Switch to not using `vmware-rpctool` but instead using the vmware go implementation of the rpc client. Signed-off-by: Robert Kaelin --- pkg/metadata/provider_vmware.go | 34 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/pkg/metadata/provider_vmware.go b/pkg/metadata/provider_vmware.go index b0d5ff3d29..aa36c46241 100644 --- a/pkg/metadata/provider_vmware.go +++ b/pkg/metadata/provider_vmware.go @@ -10,19 +10,18 @@ import ( "path" "strings" + "github.com/vmware/vmw-guestinfo/rpcvmx" + "github.com/vmware/vmw-guestinfo/vmcheck" log "github.com/sirupsen/logrus" ) const ( guestMetaData = "guestinfo.metadata" - guestUserData = "guestinfo.userdata" ) // ProviderVMware is the type implementing the Provider interface for VMware -type ProviderVMware struct { - cmd string -} +type ProviderVMware struct {} // NewVMware returns a new ProviderVMware func NewVMware() *ProviderVMware { @@ -35,18 +34,22 @@ func (p *ProviderVMware) String() string { // Probe checks if we are running on VMware func (p *ProviderVMware) Probe() bool { - c, err := exec.LookPath("vmware-rpctool") + isVM, err := vmcheck.IsVirtualWorld() if err != nil { + log.Fatalf("Error: %s", err) return false } - p.cmd = c + if !isVM { + log.Fatalf("ERROR: not in a virtual world.") + return false + } b, err := p.vmwareGet(guestUserData) return (err == nil) && len(b) > 0 && string(b) != " " && string(b) != "---" } -// Extract gets both the AWS specific and generic userdata +// Extract gets both the hostname and generic userdata func (p *ProviderVMware) Extract() ([]byte, error) { // Get host name. This must not fail metaData, err := p.vmwareGet(guestMetaData) @@ -72,24 +75,27 @@ func (p *ProviderVMware) Extract() ([]byte, error) { // vmwareGet gets and extracts the guest data func (p *ProviderVMware) vmwareGet(name string) ([]byte, error) { - cmdArg := func(n string) string { - return fmt.Sprintf("info-get %s", n) - } - // get the gusest info value - out, err := exec.Command(p.cmd, cmdArg(name)).Output() + config := rpcvmx.NewConfig() + + // get the guest info value + sout, err := config.String(name, "") if err != nil { eErr := err.(*exec.ExitError) - log.Debugf("Getting guest info %s failed: error %s", cmdArg(name), string(eErr.Stderr)) + log.Debugf("Getting guest info %s failed: error %s", name, string(eErr.Stderr)) return nil, err } - enc, err := exec.Command(p.cmd, cmdArg(name+".encoding")).Output() + // get the guest info encryption + senc, err := config.String(name+".encoding", "") if err != nil { eErr := err.(*exec.ExitError) log.Debugf("Getting guest info %s.encoding failed: error %s", name, string(eErr.Stderr)) return nil, err } + out := []byte(sout) + enc := []byte(senc) + switch strings.TrimSuffix(string(enc), "\n") { case " ": return bytes.TrimSuffix(out, []byte("\n")), nil