Skip to content

Commit 6f509d1

Browse files
committed
use masterMindsSemver
Signed-off-by: Arjun Raja Yogidas <[email protected]>
1 parent 134f401 commit 6f509d1

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ require (
136136
go.opentelemetry.io/otel/metric v1.35.0 // indirect
137137
go.opentelemetry.io/otel/trace v1.35.0 // indirect
138138
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
139-
golang.org/x/mod v0.25.0
139+
golang.org/x/mod v0.25.0 // indirect
140140
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
141141
//gomodjail:unconfined
142142
google.golang.org/grpc v1.72.2 // indirect

pkg/snapshotterutil/sociutil.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
"strconv"
2727
"strings"
2828

29-
"golang.org/x/mod/semver"
29+
"github.com/Masterminds/semver/v3"
3030

3131
"github.com/containerd/containerd/v2/client"
3232
"github.com/containerd/log"
@@ -81,14 +81,23 @@ func CheckSociVersion(requiredVersion string) error {
8181
return fmt.Errorf("failed to parse SOCI version from output: %s", versionStr)
8282
}
8383

84-
// Extract version number and add 'v' prefix required by semver package
85-
// The regex captures only the numeric part, so we always need to add the 'v'
86-
installedVersion := "v" + matches[1]
87-
requiredSemver := "v" + requiredVersion
84+
// Extract version number
85+
installedVersionStr := matches[1]
8886

89-
// Use semver package to compare versions
90-
if semver.Compare(installedVersion, requiredSemver) < 0 {
91-
return fmt.Errorf("SOCI version %s is lower than the required version %s for the convert operation", strings.TrimPrefix(installedVersion, "v"), requiredVersion)
87+
// Parse versions using semver package
88+
installedVersion, err := semver.NewVersion(installedVersionStr)
89+
if err != nil {
90+
return fmt.Errorf("failed to parse installed SOCI version: %w", err)
91+
}
92+
93+
reqVersion, err := semver.NewVersion(requiredVersion)
94+
if err != nil {
95+
return fmt.Errorf("failed to parse required SOCI version: %w", err)
96+
}
97+
98+
// Compare versions
99+
if installedVersion.LessThan(reqVersion) {
100+
return fmt.Errorf("SOCI version %s is lower than the required version %s for the convert operation", installedVersion.String(), reqVersion.String())
92101
}
93102

94103
return nil

0 commit comments

Comments
 (0)