diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-06-20 15:05:46 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-06-20 15:07:46 -0400 |
commit | 7377870641c0d2a3ee705970369fe42fcf8aa88d (patch) | |
tree | 8d33dd96ca75e7c37377e55bf64a1c99dabb23ea | |
parent | 3d78085d52f3e809381eeb885794ced7e9db1352 (diff) | |
download | podman-7377870641c0d2a3ee705970369fe42fcf8aa88d.tar.gz podman-7377870641c0d2a3ee705970369fe42fcf8aa88d.tar.bz2 podman-7377870641c0d2a3ee705970369fe42fcf8aa88d.zip |
Properly handle OCI runtime being set to a path
This is done by the --runtime flag, and as such, by all our CI.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
-rw-r--r-- | libpod/runtime.go | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/libpod/runtime.go b/libpod/runtime.go index 56ad1ffe8..d4d34242c 100644 --- a/libpod/runtime.go +++ b/libpod/runtime.go @@ -6,6 +6,7 @@ import ( "io/ioutil" "os" "path/filepath" + "strings" "sync" "syscall" @@ -837,13 +838,35 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (err error) { runtime.ociRuntimes[name] = ociRuntime } - // Set default runtime + // Do we have a default OCI runtime? if runtime.config.OCIRuntime != "" { - ociRuntime, ok := runtime.ociRuntimes[runtime.config.OCIRuntime] - if !ok { - return errors.Wrapf(ErrInvalidArg, "default OCI runtime %q not found", runtime.config.OCIRuntime) + // If the string starts with / it's a path to a runtime + // executable. + if strings.HasPrefix(runtime.config.OCIRuntime, "/") { + name := filepath.Base(runtime.config.OCIRuntime) + + supportsJSON := false + for _, r := range runtime.config.RuntimeSupportsJSON { + if r == name { + supportsJSON = true + break + } + } + + ociRuntime, err := newOCIRuntime(name, []string{runtime.config.OCIRuntime}, runtime.conmonPath, runtime.config, supportsJSON) + if err != nil { + return err + } + + runtime.ociRuntimes[name] = ociRuntime + runtime.defaultOCIRuntime = ociRuntime + } else { + ociRuntime, ok := runtime.ociRuntimes[runtime.config.OCIRuntime] + if !ok { + return errors.Wrapf(ErrInvalidArg, "default OCI runtime %q not found", runtime.config.OCIRuntime) + } + runtime.defaultOCIRuntime = ociRuntime } - runtime.defaultOCIRuntime = ociRuntime } // Do we have at least one valid OCI runtime? |