summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml2
-rw-r--r--Dockerfile2
-rw-r--r--libpod/runtime.go45
3 files changed, 40 insertions, 9 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 71fa68d45..0713f6dda 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -30,7 +30,7 @@ env:
####
#### Cache-image names to test with (double-quotes around names are critical)
###
- _BUILT_IMAGE_SUFFIX: "libpod-6296905679634432"
+ _BUILT_IMAGE_SUFFIX: "libpod-5642998972416000"
FEDORA_CACHE_IMAGE_NAME: "fedora-30-${_BUILT_IMAGE_SUFFIX}"
PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-29-${_BUILT_IMAGE_SUFFIX}"
SPECIAL_FEDORA_CACHE_IMAGE_NAME: "xfedora-30-${_BUILT_IMAGE_SUFFIX}"
diff --git a/Dockerfile b/Dockerfile
index 3c65bf5a8..4b3130245 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -57,7 +57,7 @@ RUN set -x \
&& rm -rf "$GOPATH"
# Install conmon
-ENV CONMON_COMMIT 6f3572558b97bc60dd8f8c7f0807748e6ce2c440
+ENV CONMON_COMMIT 65fe0226d85b69fc9e527e376795c9791199153d
RUN set -x \
&& export GOPATH="$(mktemp -d)" \
&& git clone https://github.com/containers/conmon.git "$GOPATH/src/github.com/containers/conmon.git" \
diff --git a/libpod/runtime.go b/libpod/runtime.go
index a06b2bb51..0405a9b85 100644
--- a/libpod/runtime.go
+++ b/libpod/runtime.go
@@ -84,6 +84,15 @@ var (
// DefaultDetachKeys is the default keys sequence for detaching a
// container
DefaultDetachKeys = "ctrl-p,ctrl-q"
+
+ // minConmonMajor is the major version required for conmon
+ minConmonMajor = 2
+
+ // minConmonMinor is the minor version required for conmon
+ minConmonMinor = 0
+
+ // minConmonPatch is the sub-minor version required for conmon
+ minConmonPatch = 1
)
// A RuntimeOption is a functional option which alters the Runtime created by
@@ -788,6 +797,7 @@ func getLockManager(runtime *Runtime) (lock.Manager, error) {
// probeConmon calls conmon --version and verifies it is a new enough version for
// the runtime expectations podman currently has
func probeConmon(conmonBinary string) error {
+ versionFormatErr := "conmon version changed format"
cmd := exec.Command(conmonBinary, "--version")
var out bytes.Buffer
cmd.Stdout = &out
@@ -799,19 +809,40 @@ func probeConmon(conmonBinary string) error {
matches := r.FindStringSubmatch(out.String())
if len(matches) != 4 {
- return errors.Wrapf(err, "conmon version changed format")
+ return errors.Wrapf(err, versionFormatErr)
}
major, err := strconv.Atoi(matches[1])
- if err != nil || major < 1 {
+ if err != nil {
+ return errors.Wrapf(err, versionFormatErr)
+ }
+ if major < minConmonMajor {
return define.ErrConmonOutdated
}
- // conmon used to be shipped with CRI-O, and was versioned along with it.
- // even though the conmon that came with crio-1.9 to crio-1.15 has a higher
- // version number than conmon 1.0.0, 1.0.0 is newer, so we need this check
+ if major > minConmonMajor {
+ return nil
+ }
+
minor, err := strconv.Atoi(matches[2])
- if err != nil || minor > 9 {
+ if err != nil {
+ return errors.Wrapf(err, versionFormatErr)
+ }
+ if minor < minConmonMinor {
return define.ErrConmonOutdated
}
+ if minor > minConmonMinor {
+ return nil
+ }
+
+ patch, err := strconv.Atoi(matches[3])
+ if err != nil {
+ return errors.Wrapf(err, versionFormatErr)
+ }
+ if patch < minConmonPatch {
+ return define.ErrConmonOutdated
+ }
+ if patch > minConmonPatch {
+ return nil
+ }
return nil
}
@@ -871,7 +902,7 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (err error) {
if !foundConmon {
if foundOutdatedConmon {
- return errors.Wrapf(define.ErrConmonOutdated, "please update to v1.0.0 or later")
+ return errors.Errorf("please update to v%d.%d.%d or later: %v", minConmonMajor, minConmonMinor, minConmonPatch, define.ErrConmonOutdated)
}
return errors.Wrapf(define.ErrInvalidArg,
"could not find a working conmon binary (configured options: %v)",