Skip to content

Commit 6480865

Browse files
committed
Update redhatrelease to detect Rocky Linux and have osrelease ignore it
1 parent 34e5b37 commit 6480865

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

ext/featurens/osrelease/osrelease.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var (
3535
"etc/fedora-release",
3636
"etc/oracle-release",
3737
"etc/redhat-release",
38+
"etc/rocky-release",
3839
"usr/lib/centos-release",
3940
}
4041

ext/featurens/redhatrelease/redhatrelease.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ var (
3434
oracleReleaseRegexp = regexp.MustCompile(`(?P<os>Oracle) (Linux Server release) (?P<version>[\d]+)`)
3535
centosReleaseRegexp = regexp.MustCompile(`(?P<os>[^\s]*) (Linux release|release) (?P<version>[\d]+)`)
3636
redhatReleaseRegexp = regexp.MustCompile(`(?P<os>Red Hat Enterprise Linux) (Client release|Server release|Workstation release|release) (?P<version>[\d]+)`)
37+
rockyReleaseRegexp = regexp.MustCompile(`(?P<os>Rocky) (Linux release) (?P<version>[\d]+)`)
3738

3839
// RequiredFilenames defines the names of the files required to identify the RHEL-based release.
39-
RequiredFilenames = []string{"etc/oracle-release", "etc/centos-release", "etc/redhat-release", "etc/system-release"}
40+
RequiredFilenames = []string{"etc/oracle-release", "etc/centos-release", "etc/redhat-release", "etc/rocky-release", "etc/system-release"}
4041
)
4142

4243
type detector struct{}
@@ -88,6 +89,15 @@ func (d detector) Detect(files tarutil.LayerFiles, opts *featurens.DetectorOptio
8889
return namespace
8990
}
9091

92+
// Attempt to match Rocky.
93+
r = rockyReleaseRegexp.FindStringSubmatch(string(f.Contents))
94+
if len(r) == 4 {
95+
return &database.Namespace{
96+
Name: strings.ToLower(r[1]) + ":" + r[3],
97+
VersionFormat: rpm.ParserName,
98+
}
99+
}
100+
91101
// Attempt to match CentOS.
92102
r = centosReleaseRegexp.FindStringSubmatch(string(f.Contents))
93103
if len(r) == 4 {

ext/featurens/redhatrelease/redhatrelease_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@ func TestDetector(t *testing.T) {
8686
"etc/system-release": {Contents: []byte(`CentOS Linux release 7.1.1503 (Core)`)},
8787
}),
8888
},
89+
{
90+
ExpectedNamespace: &database.Namespace{Name: "rocky:8", VersionFormat: rpm.ParserName},
91+
Files: tarutil.CreateNewLayerFiles(map[string]tarutil.FileData{
92+
"etc/rocky-release": {Contents: []byte(`Rocky Linux release 8.6 (Green Obsidian)`)},
93+
}),
94+
},
95+
{
96+
ExpectedNamespace: &database.Namespace{Name: "rocky:9", VersionFormat: rpm.ParserName},
97+
Files: tarutil.CreateNewLayerFiles(map[string]tarutil.FileData{
98+
"etc/rocky-release": {Contents: []byte(`Rocky Linux release 9.0 (Blue Onyx)`)},
99+
}),
100+
},
89101
{
90102
ExpectedNamespace: nil,
91103
Files: tarutil.CreateNewLayerFiles(nil),

0 commit comments

Comments
 (0)