]> Cypherpunks repositories - gostls13.git/commitdiff
misc/dist: include directories in distribution tar and zip files.
authorDave Cheney <dave@cheney.net>
Thu, 5 Apr 2012 01:39:12 +0000 (11:39 +1000)
committerAndrew Gerrand <adg@golang.org>
Thu, 5 Apr 2012 01:39:12 +0000 (11:39 +1000)
Fixes #3458.

R=adg, dsymonds
CC=golang-dev
https://golang.org/cl/5969071

misc/dist/bindist.go

index b53395627970295e13c2a7fcb8c5211db3d4c68a..77b7218ba0c0e7223a2bf59d2c3c91183c92587c 100644 (file)
@@ -574,9 +574,6 @@ func makeTar(targ, workdir string) error {
                if *verbose {
                        log.Printf("adding to tar: %s", name)
                }
-               if fi.IsDir() {
-                       return nil
-               }
                hdr, err := tarFileInfoHeader(fi, path)
                if err != nil {
                        return err
@@ -598,6 +595,9 @@ func makeTar(targ, workdir string) error {
                if err != nil {
                        return fmt.Errorf("Error writing file %q: %v", name, err)
                }
+               if fi.IsDir() {
+                       return nil
+               }
                r, err := os.Open(path)
                if err != nil {
                        return err
@@ -626,9 +626,6 @@ func makeZip(targ, workdir string) error {
        zw := zip.NewWriter(f)
 
        err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error {
-               if fi.IsDir() {
-                       return nil
-               }
                if !strings.HasPrefix(path, workdir) {
                        log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir)
                }
@@ -655,10 +652,17 @@ func makeZip(targ, workdir string) error {
                }
                fh.Name = name
                fh.Method = zip.Deflate
+               if fi.IsDir() {
+                       fh.Name += "/"        // append trailing slash
+                       fh.Method = zip.Store // no need to deflate 0 byte files
+               }
                w, err := zw.CreateHeader(fh)
                if err != nil {
                        return err
                }
+               if fi.IsDir() {
+                       return nil
+               }
                r, err := os.Open(path)
                if err != nil {
                        return err