clean rm of copied dirs and files (#799)

diff --git a/lib/private/write_source_file.bzl b/lib/private/write_source_file.bzl
index 8b72681..d5ff41e 100644
--- a/lib/private/write_source_file.bzl
+++ b/lib/private/write_source_file.bzl
@@ -219,6 +219,8 @@
 mkdir -p "$(dirname "$out")"
 if [[ -f "$in" ]]; then
     echo "Copying file $in to $out in $PWD"
+    # in case `cp` from previous command was terminated midway which can result in read-only files/dirs
+    chmod -R ug+w "$out" > /dev/null 2>&1 || true
     rm -Rf "$out"
     cp -f "$in" "$out"
     # cp should make the file writable but call chmod anyway as a defense in depth
@@ -227,6 +229,8 @@
     {executable_file}
 else
     echo "Copying directory $in to $out in $PWD"
+    # in case `cp` from previous command was terminated midway which can result in read-only files/dirs
+    chmod -R ug+w "$out" > /dev/null 2>&1 || true
     rm -Rf "$out"/*
     mkdir -p "$out"
     cp -fRL "$in"/* "$out"