Capture "broken" symlinks during container build
- Fixes #1267 Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user