diff options
author | Sascha Grunert <sgrunert@suse.com> | 2019-07-30 13:24:02 +0200 |
---|---|---|
committer | Sascha Grunert <sgrunert@suse.com> | 2019-08-01 08:32:25 +0200 |
commit | 7dfaef7766871e5fd914eb0373b26db29df5bb46 (patch) | |
tree | 8a321b2b5a98b90e6054b9027f3b7f4ea61474a0 /libpod | |
parent | a622f8d345b1853401de2e533e9fbf14ef169fa2 (diff) | |
download | podman-7dfaef7766871e5fd914eb0373b26db29df5bb46.tar.gz podman-7dfaef7766871e5fd914eb0373b26db29df5bb46.tar.bz2 podman-7dfaef7766871e5fd914eb0373b26db29df5bb46.zip |
Add runtime and conmon path discovery
The `$PATH` environment variable will now used as fallback if no valid
runtime or conmon path matches. The debug logs has been updated to state
the used executable.
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/oci.go | 11 | ||||
-rw-r--r-- | libpod/runtime.go | 16 |
2 files changed, 23 insertions, 4 deletions
diff --git a/libpod/oci.go b/libpod/oci.go index 193e66aaf..2eb004b84 100644 --- a/libpod/oci.go +++ b/libpod/oci.go @@ -106,8 +106,19 @@ func newOCIRuntime(name string, paths []string, conmonPath string, runtimeCfg *R } foundPath = true runtime.path = path + logrus.Debugf("using runtime %q", path) break } + + // Search the $PATH as last fallback + if !foundPath { + if foundRuntime, err := exec.LookPath(name); err == nil { + foundPath = true + runtime.path = foundRuntime + logrus.Debugf("using runtime %q from $PATH: %q", name, foundRuntime) + } + } + if !foundPath { return nil, errors.Wrapf(define.ErrInvalidArg, "no valid executable found for OCI runtime %s", name) } diff --git a/libpod/runtime.go b/libpod/runtime.go index bb6bfbfcc..ffdbc32f1 100644 --- a/libpod/runtime.go +++ b/libpod/runtime.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "os" + "os/exec" "os/user" "path/filepath" "strings" @@ -740,8 +741,19 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (err error) { } foundConmon = true runtime.conmonPath = path + logrus.Debugf("using conmon: %q", path) break } + + // Search the $PATH as last fallback + if !foundConmon { + if conmon, err := exec.LookPath("conmon"); err == nil { + foundConmon = true + runtime.conmonPath = conmon + logrus.Debugf("using conmon from $PATH: %q", conmon) + } + } + if !foundConmon { return errors.Wrapf(define.ErrInvalidArg, "could not find a working conmon binary (configured options: %v)", @@ -938,10 +950,6 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (err error) { // Initialize remaining OCI runtimes for name, paths := range runtime.config.OCIRuntimes { - if len(paths) == 0 { - return errors.Wrapf(define.ErrInvalidArg, "must provide at least 1 path to OCI runtime %s", name) - } - supportsJSON := false for _, r := range runtime.config.RuntimeSupportsJSON { if r == name { |