fix: copy_to_directory repairs read-only file permissions (#134)

When two srcs have the same nested folder, we need to correct the permissions like bazel's sandbox would.

Fixes #133
This commit is contained in:
Alex Eagle 2022-06-08 15:41:54 -07:00 committed by GitHub
parent 73bfc53660
commit 695a8c4ad4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 0 deletions

View File

@ -145,6 +145,12 @@ if [[ -f "{src}" ]]; then
mkdir -p "{dst_dir}" mkdir -p "{dst_dir}"
cp -f "{src}" "{dst}" cp -f "{src}" "{dst}"
else else
if [[ -d "{dst}" ]]; then
# When running outside the sandbox, then an earlier copy will create the dst folder
# with nested read-only folders, so our copy operation will fail to write there.
# Make sure the output folders are writeable.
find "{dst}" -type d -print0 | xargs -0 chmod a+w
fi
mkdir -p "{dst}" mkdir -p "{dst}"
cp -fR "{src}/." "{dst}" cp -fR "{src}/." "{dst}"
fi fi

View File

@ -250,3 +250,29 @@ diff_test(
file1 = "case_10", file1 = "case_10",
file2 = ":expected_10", file2 = ":expected_10",
) )
copy_directory(
name = "g1_out",
src = "g1",
out = "g1_out",
)
copy_directory(
name = "g2_out",
src = "g2",
out = "g2_out",
)
# Case 11: two inputs with same subfolders
# regression test for https://github.com/aspect-build/bazel-lib/issues/133
copy_to_directory(
name = "case_11",
srcs = [
"g1_out",
"g2_out",
],
root_paths = [
"{}/g1_out".format(package_name()),
"{}/g2_out".format(package_name()),
],
)

View File

View File