2024-05-01 19:36:39 +00:00
|
|
|
# Edits mtree files. See the modify_mtree macro in /lib/tar.bzl.
|
|
|
|
{
|
|
|
|
if (strip_prefix != "") {
|
|
|
|
if ($1 == strip_prefix) {
|
|
|
|
# this line declares the directory which is now the root. It may be discarded.
|
|
|
|
next;
|
|
|
|
} else if (index($1, strip_prefix) == 1) {
|
|
|
|
# this line starts with the strip_prefix
|
|
|
|
sub("^" strip_prefix "/", "");
|
2024-07-02 16:27:06 +00:00
|
|
|
|
|
|
|
# NOTE: The mtree format treats file paths without slashes as "relative" entries.
|
|
|
|
# If a relative entry is a directory, then it will "change directory" to that
|
|
|
|
# directory, and any subsequent "relative" entries will be created inside that
|
|
|
|
# directory. This causes issues when there is a top-level directory that is
|
|
|
|
# followed by a top-level file, as the file will be created inside the directory.
|
|
|
|
# To avoid this, we append a slash to the directory path to make it a "full" entry.
|
|
|
|
components = split($1, _, "/");
|
|
|
|
if ($0 ~ /type=dir/ && components == 1) {
|
|
|
|
$1 = $1 "/";
|
|
|
|
}
|
2024-05-01 19:36:39 +00:00
|
|
|
} else {
|
|
|
|
# this line declares some path under a parent directory, which will be discarded
|
|
|
|
next;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (mtime != "") {
|
|
|
|
sub(/time=[0-9\.]+/, "time=" mtime);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (owner != "") {
|
|
|
|
sub(/uid=[0-9\.]+/, "uid=" owner)
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ownername != "") {
|
|
|
|
sub(/uname=[^ ]+/, "uname=" ownername)
|
|
|
|
}
|
|
|
|
|
|
|
|
if (package_dir != "") {
|
|
|
|
sub(/^/, package_dir "/")
|
|
|
|
}
|
|
|
|
print;
|
|
|
|
}
|