diff --git a/pkg/private/tar/build_tar.py b/pkg/private/tar/build_tar.py index ab16610d..b6b75bd7 100644 --- a/pkg/private/tar/build_tar.py +++ b/pkg/private/tar/build_tar.py @@ -309,7 +309,10 @@ def add_manifest_entry(self, entry_list, file_attributes): elif entry.entry_type == manifest.ENTRY_IS_EMPTY_FILE: self.add_empty_file(entry.dest, **attrs) else: - self.add_file(entry.src, entry.dest, **attrs) + if os.path.isdir(entry.src): + self.add_tree(entry.src, entry.dest, **attrs) + else: + self.add_file(entry.src, entry.dest, **attrs) def main(): diff --git a/tests/tar/BUILD b/tests/tar/BUILD index 19504e1c..22d6c6ef 100644 --- a/tests/tar/BUILD +++ b/tests/tar/BUILD @@ -60,6 +60,20 @@ genrule( cmd = "for i in $(OUTS); do echo 1 >$$i; done", ) +genrule( + name = "generate_dir_file", + outs = ["lib"], + cmd = "mkdir -p $@; echo 1 >$@/nsswitch.conf", +) + +pkg_tar( + name = "test_tar_dir_file", + srcs = [ + ":generate_dir_file", + ], + out = "dir_file.tar", +) + directory( name = "generate_tree", contents = "hello there",