diff --git a/pkg/kernelrelease/kernelrelease.go b/pkg/kernelrelease/kernelrelease.go index 2b414b93..f7c49540 100644 --- a/pkg/kernelrelease/kernelrelease.go +++ b/pkg/kernelrelease/kernelrelease.go @@ -25,7 +25,7 @@ import ( ) var ( - kernelVersionPattern = regexp.MustCompile(`(?P^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)[.+]?(?P0|[1-9]\d*)?)(?P[-.+](?P\d+|\d*[a-zA-Z-][0-9a-zA-Z-]*)?([\.+~](\d+|\d*[a-zA-Z-][0-9a-zA-Z-_]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$`) + kernelVersionPattern = regexp.MustCompile(`(?P^(?P0|[1-9]\d*)(?:\.(?P0|[1-9]\d*)[.+]?(?P0|[1-9]\d*)?)?)(?P[-.+](?P\d+|\d*[a-zA-Z-][0-9a-zA-Z-]*)?([\.+~](\d+|\d*[a-zA-Z-][0-9a-zA-Z-_]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$`) ) const ( @@ -110,7 +110,9 @@ func FromString(kernelVersionStr string) KernelRelease { case "version": kv.Major, err = strconv.ParseUint(match[i], 10, 64) case "patchlevel": - kv.Minor, err = strconv.ParseUint(match[i], 10, 64) + if len(match[i]) > 0 { + kv.Minor, err = strconv.ParseUint(match[i], 10, 64) + } case "sublevel": if len(match[i]) > 0 { // We accept a missing sublevel (defaulting to 0) diff --git a/pkg/kernelrelease/kernelrelease_test.go b/pkg/kernelrelease/kernelrelease_test.go index a38f0bfb..dd454d26 100644 --- a/pkg/kernelrelease/kernelrelease_test.go +++ b/pkg/kernelrelease/kernelrelease_test.go @@ -40,6 +40,17 @@ func TestFromString(t *testing.T) { FullExtraversion: "-arch1-1", }, }, + "just major version": { + kernelVersionStr: "7", + want: KernelRelease{ + Fullversion: "7", + Version: semver.Version{ + Major: 7, + }, + Extraversion: "", + FullExtraversion: "", + }, + }, "version RC": { kernelVersionStr: "6.4-rc1", want: KernelRelease{