Merge pull request #1285 from anderbubble/container-build-symlinks-1267

Capture "broken" symlinks during container build
This commit is contained in:
Christian Goll
2024-07-02 08:01:36 +02:00
committed by GitHub
3 changed files with 13 additions and 7 deletions

View File

@@ -47,6 +47,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Fix wwclient not reading asset-tag. #1110
- Fix dhcp not passing asset tag or uuid to iPXE. #1110
## v4.5.6, unreleased
### Fixed
- Capture "broken" symlinks during container buildA. #1267
## v4.5.4, 2024-06-12
### Fixed

View File

@@ -297,11 +297,8 @@ func FindFilterFiles(
dev := path_stat.Sys().(*syscall.Stat_t).Dev
for _, inc := range globedInclude {
wwlog.Debug("inc %s", inc)
stat, err := os.Stat(inc)
if os.IsNotExist(err) {
// there may be broken softlinks
continue
} else if err != nil {
stat, err := os.Lstat(inc)
if err != nil {
return ofiles, err
}
if stat.IsDir() {

View File

@@ -7,6 +7,7 @@ import (
"sort"
"testing"
"github.com/stretchr/testify/assert"
"github.com/warewulf/warewulf/internal/pkg/wwlog"
)
@@ -33,14 +34,16 @@ func Test_FindFilterFiles(t *testing.T) {
TryCreatePath(t, dir, "bin")
TryCreatePath(t, dir, "lib")
files, err := FindFilterFiles(dir, []string{"boot", "usr", "bin"}, []string{"/b*/", "/usr/local"}, true)
assert.NoError(t, os.Symlink("/path/to/target", filepath.Join(dir, "symlink")))
files, err := FindFilterFiles(dir, []string{"boot", "usr", "bin", "symlink"}, []string{"/b*/", "/usr/local"}, true)
if err != nil {
t.Errorf("FindFilerFiles failed: %v", err)
t.FailNow()
}
expected := []string{"usr", "usr/bin", "usr/usr", "usr/usr/local"}
expected := []string{"usr", "usr/bin", "usr/usr", "usr/usr/local", "symlink"}
sort.Strings(expected)
sort.Strings(files)
if !reflect.DeepEqual(files, expected) {