diff options
author | Peter Korsgaard <peter@korsgaard.com> | 2018-02-27 09:55:41 +0100 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2018-02-27 17:02:26 +0100 |
commit | b8fa273d500b44153e9939f0a100e97db2ff63ed (patch) | |
tree | 7d9709f29a2bdbf9c173d4d5ab2273ae79bdbccf /support | |
parent | 7c09cb82b75f30eba7a9daaae5e77a604f6e49c1 (diff) | |
download | buildroot-b8fa273d500b44153e9939f0a100e97db2ff63ed.tar.gz buildroot-b8fa273d500b44153e9939f0a100e97db2ff63ed.zip |
check-host-tar.sh: blacklist tar 1.30+
Tar 1.30 changed the --numeric-owner output for filenames > 100 characters,
leading to hash mismatches for the tar archives we create ourselves from
git. This is really a fix for a bug in earlier tar versions regarding
deterministic output, so it is unlikely to be reverted in later versions.
For more details, see:
http://lists.busybox.net/pipermail/buildroot/2018-January/211222.html
To work around this issue, blacklist tar 1.30+ similar to how we do it for
pre-1.17 versions so Buildroot falls back to building host-tar.
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'support')
-rwxr-xr-x | support/dependencies/check-host-tar.sh | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/support/dependencies/check-host-tar.sh b/support/dependencies/check-host-tar.sh index 932d3c4fb2..2143877524 100755 --- a/support/dependencies/check-host-tar.sh +++ b/support/dependencies/check-host-tar.sh @@ -30,13 +30,28 @@ fi # containing hard-links if the --strip-components option is used). major_min=1 minor_min=17 -if [ $major -gt $major_min ]; then - echo $tar -else - if [ $major -eq $major_min -a $minor -ge $minor_min ]; then - echo $tar - else - # echo nothing: no suitable tar found - exit 1 - fi + +# Maximal version = 1.29 (1.30 changed --numeric-owner output for +# filenames > 100 characters). This is really a fix for a bug in +# earlier tar versions regarding deterministic output so it is +# unlikely to be reverted in later versions. +major_max=1 +minor_max=29 + +if [ $major -lt $major_min -o $major -gt $major_max ]; then + # echo nothing: no suitable tar found + exit 1 fi + +if [ $major -eq $major_min -a $minor -lt $minor_min ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +if [ $major -eq $major_max -a $minor -gt $minor_max ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +# valid +echo $tar |