diff options
author | Adam Azarchs <adam.azarchs@10xgenomics.com> | 2023-10-06 13:41:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-06 13:41:03 -0700 |
commit | 1b5710cad7c602d1e330a14b5f93b8037cb48e51 (patch) | |
tree | d29ff185aa7232579d6ea2c0cc21ed0f9285f03b | |
parent | ff60b34e037313927b9067dd883dd82e1fbc211e (diff) | |
download | bazelbuild-rules_pkg-1b5710cad7c602d1e330a14b5f93b8037cb48e51.tar.gz |
fix(pkg_tar): properly normalize paths for empty files (#760)
The directory prefix attribute for a `pkg_tar` was not being honored for
empty files or empty directories.
Closes #758
-rw-r--r-- | pkg/private/tar/build_tar.py | 4 | ||||
-rw-r--r-- | tests/tar/BUILD | 10 | ||||
-rw-r--r-- | tests/tar/pkg_tar_test.py | 1 |
3 files changed, 12 insertions, 3 deletions
diff --git a/pkg/private/tar/build_tar.py b/pkg/private/tar/build_tar.py index fde98d2..4ff9852 100644 --- a/pkg/private/tar/build_tar.py +++ b/pkg/private/tar/build_tar.py @@ -316,11 +316,11 @@ class TarFile(object): if entry.type == manifest.ENTRY_IS_LINK: self.add_link(entry.dest, entry.src, **attrs) elif entry.type == manifest.ENTRY_IS_DIR: - self.add_empty_dir(entry.dest, **attrs) + self.add_empty_dir(self.normalize_path(entry.dest), **attrs) elif entry.type == manifest.ENTRY_IS_TREE: self.add_tree(entry.src, entry.dest, **attrs) elif entry.type == manifest.ENTRY_IS_EMPTY_FILE: - self.add_empty_file(entry.dest, **attrs) + self.add_empty_file(self.normalize_path(entry.dest), **attrs) else: self.add_file(entry.src, entry.dest, **attrs) diff --git a/tests/tar/BUILD b/tests/tar/BUILD index c980057..a30b685 100644 --- a/tests/tar/BUILD +++ b/tests/tar/BUILD @@ -16,7 +16,7 @@ # buildifier: disable=bzl-visibility load("//pkg:mappings.bzl", "pkg_attributes") -load("//pkg:mappings.bzl", "pkg_files", "pkg_mklink", "strip_prefix") +load("//pkg:mappings.bzl", "pkg_files", "pkg_mkdirs", "pkg_mklink", "strip_prefix") load("//pkg:verify_archive.bzl", "verify_archive_test") load("//pkg/private/tar:tar.bzl", "SUPPORTED_TAR_COMPRESSIONS", "pkg_tar") load("//tests:my_package_name.bzl", "my_package_naming") @@ -106,10 +106,18 @@ pkg_tar( package_variables = ":my_package_variables", ) +pkg_mkdirs( + name = "mydir", + dirs = [ + "mydir", + ], +) + pkg_tar( name = "test_tar_package_dir_substitution", srcs = [ ":BUILD", + ":mydir", ], package_dir = "level1/{label}/level3", package_variables = ":my_package_variables", diff --git a/tests/tar/pkg_tar_test.py b/tests/tar/pkg_tar_test.py index 15cadc4..eb8a127 100644 --- a/tests/tar/pkg_tar_test.py +++ b/tests/tar/pkg_tar_test.py @@ -195,6 +195,7 @@ class PkgTarTest(unittest.TestCase): {'name': 'level1/some_value'}, {'name': 'level1/some_value/level3'}, {'name': 'level1/some_value/level3/BUILD'}, + {'name': 'level1/some_value/level3/mydir'}, ] self.assertTarFileContent('test_tar_package_dir_substitution.tar', content) |