b11956fb66
We can't stay in the past forever and ever... Since tar 1.35, the way some fields (devmajor and devminor) are stored has changed. These fields exist for each file in the tarball, but only used for device nodes. In previous versions of GNU tar, they were set to zero; since 1.35, they are set to empty. Although this doesn't change anything about the content of the tarball, and it will be extracted in exactly the same way regardless of the tar version used for extracting, it does change the hash of the tarball. Therefore, we have to - make sure that the correct version of tar is used; - update the format version so that the filename is different from before. Increment all BR_FMT_VERSION by one. Require tar >= 1.35 instead of < 1.35. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> [Arnout: also increment BR_FMT_VERSION and extend the commit message] Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
47 lines
1.0 KiB
Bash
Executable File
47 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
candidate="$1"
|
|
|
|
tar=`which $candidate`
|
|
if [ ! -x "$tar" ]; then
|
|
tar=`which tar`
|
|
if [ ! -x "$tar" ]; then
|
|
# echo nothing: no suitable tar found
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Output of 'tar --version' examples:
|
|
# tar (GNU tar) 1.15.1
|
|
# tar (GNU tar) 1.25
|
|
# bsdtar 2.8.3 - libarchive 2.8.3
|
|
version=`$tar --version | head -n 1 | sed 's/^.*\s\([0-9]\+\.\S\+\).*$/\1/'`
|
|
major=`echo "$version" | cut -d. -f1`
|
|
minor=`echo "$version" | cut -d. -f2`
|
|
bugfix=`echo "$version" | cut -d. -f3`
|
|
version_bsd=`$tar --version | grep 'bsdtar'`
|
|
|
|
# BSD tar does not have all the command-line options
|
|
if [ -n "${version_bsd}" ] ; then
|
|
# echo nothing: no suitable tar found
|
|
exit 1
|
|
fi
|
|
|
|
# Minimal version = 1.35 (1.35 changed devmajor/devminor for files)
|
|
# https://lists.gnu.org/archive/html/info-gnu/2023-07/msg00005.html
|
|
major_min=1
|
|
minor_min=35
|
|
|
|
if [ $major -lt $major_min ]; 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
|
|
|
|
# valid
|
|
echo $tar
|