diff options
authorGravatar Jean-pierre Cartal <jpcartal@free.fr>2021-03-18 08:32:40 +0100
committerGravatar Peter Korsgaard <peter@korsgaard.com>2021-03-24 10:45:13 +0100
commit7d377e1f449e36f2756255cc528ebff5ea96e568 (patch)
parentfc415fd41710d378933ea47e50a9bcd4744ac946 (diff)
support/download: Fix tarball generation with symlinks pointing to ./something
When a --transform expression is provided, it is by default also applied to the target of a symlink. When we create tarballs (from git or svn checkouts), we use a --transform expression to replace the leading ./ with the package name and version. This causes issues when a package contains symlinks that points to ./something, as the leading './' is also replaced. Fix that by using the 'S' transformation scope flag, as described in the tar manual: https://www.gnu.org/software/tar/manual/html_node/transform.html#transform In addition, several transformation scope flags are supported, that control to what files transformations apply. These are: ‘r’ Apply transformation to regular archive members. ‘R’ Do not apply transformation to regular archive members. ‘s’ Apply transformation to symbolic link targets. ‘S’ Do not apply transformation to symbolic link targets. ‘h’ Apply transformation to hard link targets. ‘H’ Do not apply transformation to hard link targets. Default is ‘rsh’ [...]. Fixes: #13616 Signed-off-by: Jean-pierre Cartal <jpcartal@free.fr> Tested-by: Yann E. MORIN <yann.morin.1998@free.fr> Acked-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
1 files changed, 1 insertions, 1 deletions
diff --git a/support/download/git b/support/download/git
index 15d8c66e05..1b0dc1b115 100755
--- a/support/download/git
+++ b/support/download/git
@@ -203,7 +203,7 @@ LC_ALL=C sort <"${output}.list" >"${output}.list.sorted"
# Create GNU-format tarballs, since that's the format of the tarballs on
# sources.buildroot.org and used in the *.hash files
-tar cf - --transform="s#^\./#${basename}/#" \
+tar cf - --transform="s#^\./#${basename}/#S" \
--numeric-owner --owner=0 --group=0 --mtime="${date}" --format=gnu \
-T "${output}.list.sorted" >"${output}.tar"
gzip -6 -n <"${output}.tar" >"${output}"