This commit is contained in:
Martin Zihlmann 2025-06-04 05:30:23 -04:00 committed by GitHub
commit a9cc7d3289
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 1 deletions

View File

@ -0,0 +1,13 @@
FROM ubuntu
RUN mkdir /test \
&& ln -s /test /link
# Fails on main@1d2bff5 before #3429: On the second run,
# when extracting from cache, we first delete the /test directory
# and thereafter fail to replace the link with a directory.
# The link is now broken and 'stat' returns an error.
# On build this works as we first delete the link,
# and only thereafter create the directory.
RUN rm -rf /test /link \
&& mkdir /link

View File

@ -218,6 +218,7 @@ func NewDockerFileBuilder() *DockerFileBuilder {
"Dockerfile_test_cache_install": {},
"Dockerfile_test_cache_perm": {},
"Dockerfile_test_cache_copy": {},
"Dockerfile_test_issue_3429": {},
}
d.TestOCICacheDockerfiles = map[string]struct{}{
"Dockerfile_test_cache_oci": {},

View File

@ -843,7 +843,7 @@ func Volumes() []string {
func MkdirAllWithPermissions(path string, mode os.FileMode, uid, gid int64) error {
// Check if a file already exists on the path, if yes then delete it
info, err := os.Stat(path)
info, err := os.Lstat(path)
if err == nil && !info.IsDir() {
logrus.Tracef("Removing file because it needs to be a directory %s", path)
if err := os.Remove(path); err != nil {