summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Azarchs <adam.azarchs@10xgenomics.com>2023-10-06 13:41:03 -0700
committerGitHub <noreply@github.com>2023-10-06 13:41:03 -0700
commit1b5710cad7c602d1e330a14b5f93b8037cb48e51 (patch)
treed29ff185aa7232579d6ea2c0cc21ed0f9285f03b
parentff60b34e037313927b9067dd883dd82e1fbc211e (diff)
downloadbazelbuild-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.py4
-rw-r--r--tests/tar/BUILD10
-rw-r--r--tests/tar/pkg_tar_test.py1
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)