fix(tar): handle spaces in input filenames (#835)
This commit is contained in:
parent
d8d22cbf77
commit
b15dc31a81
|
@ -183,6 +183,10 @@ def _to_rlocation_path(file, workspace):
|
|||
else:
|
||||
return workspace + "/" + file.short_path
|
||||
|
||||
def _vis_encode(filename):
|
||||
# TODO(#794): correctly encode all filenames by using vis(3) (or porting it)
|
||||
return filename.replace(" ", "\\040")
|
||||
|
||||
def _expand(file, expander, transform = to_repository_relative_path):
|
||||
expanded = expander.expand(file)
|
||||
lines = []
|
||||
|
@ -193,7 +197,7 @@ def _expand(file, expander, transform = to_repository_relative_path):
|
|||
parent = "/".join(segments[:i])
|
||||
lines.append(_mtree_line(parent, "dir"))
|
||||
|
||||
lines.append(_mtree_line(path, "file", content = e.path))
|
||||
lines.append(_mtree_line(_vis_encode(path), "file", content = _vis_encode(e.path)))
|
||||
return lines
|
||||
|
||||
def _mtree_impl(ctx):
|
||||
|
|
|
@ -217,6 +217,8 @@ tar(
|
|||
"treeartifact",
|
||||
],
|
||||
out = "7.tar",
|
||||
# When running remote, BB lays out files with inodes that mtree optimizes into a hardlink
|
||||
tags = ["no-remote-exec"],
|
||||
)
|
||||
|
||||
assert_tar_listing(
|
||||
|
@ -229,9 +231,11 @@ assert_tar_listing(
|
|||
"drwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/srcdir/",
|
||||
"-rwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/srcdir/info",
|
||||
"-rwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/srcdir/pkg",
|
||||
"-rwxr-xr-x 0 0 0 1 Jan 1 2023 lib/tests/tar/srcdir/space in name.txt",
|
||||
"drwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/treeartifact/",
|
||||
"-rwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/treeartifact/info",
|
||||
"-rwxr-xr-x 0 0 0 0 Jan 1 2023 lib/tests/tar/treeartifact/pkg",
|
||||
"-rwxr-xr-x 0 0 0 1 Jan 1 2023 lib/tests/tar/treeartifact/space in name.txt",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
e
|
Loading…
Reference in New Issue