Merge "Have soong_zip add entries for ancestor directories"

This commit is contained in:
Jeff Gaston
2017-08-16 19:41:27 +00:00
committed by Gerrit Code Review

View File

@@ -646,15 +646,24 @@ func (z *zipWriter) compressWholeFile(ze *zipEntry, r *os.File, exec Execution,
}
func (z *zipWriter) writeDirectory(dir string) error {
if dir != "" && !strings.HasSuffix(dir, "/") {
dir = dir + "/"
// clean the input
cleanDir := filepath.Clean(dir)
// discover any uncreated directories in the path
zipDirs := []string{}
for cleanDir != "" && cleanDir != "." && !z.createdDirs[cleanDir] {
z.createdDirs[cleanDir] = true
// parent directories precede their children
zipDirs = append([]string{cleanDir}, zipDirs...)
cleanDir = filepath.Dir(cleanDir)
}
for dir != "" && dir != "./" && !z.createdDirs[dir] {
z.createdDirs[dir] = true
// make a directory entry for each uncreated directory
for _, cleanDir := range zipDirs {
dirHeader := &zip.FileHeader{
Name: dir,
Name: cleanDir + "/",
}
dirHeader.SetMode(0700 | os.ModeDir)
dirHeader.SetModTime(z.time)
@@ -665,8 +674,6 @@ func (z *zipWriter) writeDirectory(dir string) error {
}
close(ze)
z.writeOps <- ze
dir, _ = filepath.Split(dir)
}
return nil