Skip to content

Commit

Permalink
Merge pull request #1268 from Prepultrue/main
Browse files Browse the repository at this point in the history
Accept + within kernel versions

(cherry picked from commit 1d4f3c6)

Signed-off-by: Jonathon Anderson <[email protected]>
  • Loading branch information
anderbubble committed Jul 5, 2024
1 parent 2bdf49f commit a24dae7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 22 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Changed

- Explicitly ignore compat-style NIS lines in passwd/group during syncuser. #1286
- Accept `+` within kernel version. #1268

## v4.5.4, 2024-06-12

Expand Down
2 changes: 1 addition & 1 deletion internal/pkg/kernel/kernel.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ func FindKernel(root string) (kPath string, version string, err error) {
}
for _, foundKernel := range potentialKernel {
wwlog.Debug("Parsing out kernel version for %s", foundKernel)
re := regexp.MustCompile(fmt.Sprintf(path.Join(root, searchPath), `([\w\d-\.]*)`))
re := regexp.MustCompile(fmt.Sprintf(path.Join(root, searchPath), `([\w\d-\.+]*)`))
version := re.FindAllStringSubmatch(foundKernel, -1)
if version == nil {
return foundKernel, "", fmt.Errorf("could not parse kernel version")
Expand Down
45 changes: 24 additions & 21 deletions internal/pkg/kernel/kernel_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,29 @@ var kernelBuildTests = []struct {
}{
{"4.3.2.1", "kernel1", "vmlinuz-1.2.3.4.gz", false},
{"1.2.3.4", "kernel1", "vmlinuz-1.2.3.4.gz", true},
{"1.2+3+4", "kernel1", "vmlinuz-1.2+3+4.gz", true},
}

func Test_BuildKernel(t *testing.T) {
wwlog.SetLogLevel(wwlog.DEBUG)
srvDir, err := os.MkdirTemp(os.TempDir(), "ww-test-srv-*")
assert.NoError(t, err)
defer os.RemoveAll(srvDir)
conf := warewulfconf.Get()
conf.Paths.WWProvisiondir = srvDir
kernelDir, err := os.MkdirTemp(os.TempDir(), "ww-test-kernel-*")
assert.NoError(t, err)
defer os.RemoveAll(kernelDir)
{
err = os.MkdirAll(path.Join(kernelDir, "boot"), 0755)
assert.NoError(t, err)
err = os.MkdirAll(path.Join(kernelDir, "lib/modules/old-kernel"), 0755)
assert.NoError(t, err)
_, err = os.Create(path.Join(kernelDir, "lib/modules/old-kernel/old-module"))
assert.NoError(t, err)
err = os.MkdirAll(path.Join(kernelDir, "lib/firmware"), 0755)
for _, tt := range kernelBuildTests {
srvDir, err := os.MkdirTemp(os.TempDir(), "ww-test-srv-*")
assert.NoError(t, err)
_, err = os.Create(path.Join(kernelDir, "lib/firmware/test-firmware"))
conf := warewulfconf.Get()
conf.Paths.WWProvisiondir = srvDir
kernelDir, err := os.MkdirTemp(os.TempDir(), "ww-test-kernel-*")
assert.NoError(t, err)
for _, tt := range kernelBuildTests {
{
err = os.MkdirAll(path.Join(kernelDir, "boot"), 0755)
assert.NoError(t, err)
err = os.MkdirAll(path.Join(kernelDir, "lib/modules/old-kernel"), 0755)
assert.NoError(t, err)
_, err = os.Create(path.Join(kernelDir, "lib/modules/old-kernel/old-module"))
assert.NoError(t, err)
err = os.MkdirAll(path.Join(kernelDir, "lib/firmware"), 0755)
assert.NoError(t, err)
_, err = os.Create(path.Join(kernelDir, "lib/firmware/test-firmware"))
assert.NoError(t, err)
_, err = os.Create(path.Join(kernelDir, "boot", tt.kernelFileName))
assert.NoError(t, err)
err = os.MkdirAll(path.Join(kernelDir, "lib/modules", tt.kernelVersion, "/nested"), 0755)
Expand All @@ -52,8 +51,6 @@ func Test_BuildKernel(t *testing.T) {
err = os.Symlink(path.Join(kernelDir, "lib/modules/old-kernel/old-module"), path.Join(kernelDir, "lib/modules", tt.kernelVersion, "symlink-module"))
assert.NoError(t, err)
}
}
for _, tt := range kernelBuildTests {
t.Run(tt.kernelName, func(t *testing.T) {
err = Build(tt.kernelVersion, tt.kernelName, kernelDir)
if tt.succeed {
Expand All @@ -63,10 +60,16 @@ func Test_BuildKernel(t *testing.T) {
assert.FileExists(t, path.Join(srvDir, "kernel", tt.kernelName, "kmods.img"))
files, err := util.CpioFiles(path.Join(srvDir, "kernel", tt.kernelName, "kmods.img"))
assert.NoError(t, err)
assert.ElementsMatch(t, files, []string{"lib/firmware/test-firmware", "lib/modules/1.2.3.4/symlink-module", "lib/modules/1.2.3.4/test-module", "lib/modules/1.2.3.4/nested"})
assert.ElementsMatch(t, files, []string{
"lib/firmware/test-firmware",
"lib/modules/" + tt.kernelVersion + "/symlink-module",
"lib/modules/" + tt.kernelVersion + "/test-module",
"lib/modules/" + tt.kernelVersion + "/nested"})
} else {
assert.Error(t, err)
}
})
os.RemoveAll(srvDir)
os.RemoveAll(kernelDir)
}
}

0 comments on commit a24dae7

Please sign in to comment.