hooks: 00-distfiles.sh: detect bsdtar and then tar (GNU).
This way xbps-src is able to work with any of them.
This commit is contained in:
parent
3c729b5614
commit
d15b1f6746
|
@ -4,6 +4,7 @@
|
||||||
hook() {
|
hook() {
|
||||||
local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
|
local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
|
||||||
local f j curfile found extractdir
|
local f j curfile found extractdir
|
||||||
|
local TAR_CMD
|
||||||
|
|
||||||
if [ -z "$distfiles" -a -z "$checksum" ]; then
|
if [ -z "$distfiles" -a -z "$checksum" ]; then
|
||||||
mkdir -p $wrksrc
|
mkdir -p $wrksrc
|
||||||
|
@ -23,6 +24,10 @@ hook() {
|
||||||
mkdir -p ${wrksrc} || msg_error "$pkgver: failed to create wrksrc.\n"
|
mkdir -p ${wrksrc} || msg_error "$pkgver: failed to create wrksrc.\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
TAR_CMD="$(command -v bsdtar)"
|
||||||
|
[ -z "$TAR_CMD" ] && TAR_CMD="$(command -v tar)"
|
||||||
|
[ -z "$TAR_CMD" ] && msg_error "xbps-src: no suitable tar cmd (bsdtar, tar)\n"
|
||||||
|
|
||||||
msg_normal "$pkgver: extracting distfile(s), please wait...\n"
|
msg_normal "$pkgver: extracting distfile(s), please wait...\n"
|
||||||
|
|
||||||
for f in ${distfiles}; do
|
for f in ${distfiles}; do
|
||||||
|
@ -71,7 +76,7 @@ hook() {
|
||||||
|
|
||||||
case ${cursufx} in
|
case ${cursufx} in
|
||||||
tar|txz|tbz|tlz|tgz|crate)
|
tar|txz|tbz|tlz|tgz|crate)
|
||||||
bsdtar -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C $extractdir
|
$TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C $extractdir
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -50,7 +50,7 @@ contents_cksum() {
|
||||||
|
|
||||||
case ${cursufx} in
|
case ${cursufx} in
|
||||||
tar|txz|tbz|tlz|tgz|crate)
|
tar|txz|tbz|tlz|tgz|crate)
|
||||||
cksum=$($XBPS_DIGEST_CMD <(bsdtar xf "$curfile" --list))
|
cksum=$($XBPS_DIGEST_CMD <($TAR_CMD xf "$curfile" $TAR_CMD_STDOUT))
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
msg_error "$pkgver: extracting $curfile to pipe.\n"
|
msg_error "$pkgver: extracting $curfile to pipe.\n"
|
||||||
fi
|
fi
|
||||||
|
@ -73,7 +73,7 @@ contents_cksum() {
|
||||||
;;
|
;;
|
||||||
rpm)
|
rpm)
|
||||||
if command -v rpmextract &>/dev/null; then
|
if command -v rpmextract &>/dev/null; then
|
||||||
cksum=$($XBPS_DIGEST_CMD <(rpm2cpio "$curfile" | bsdtar xf - --to-stdout))
|
cksum=$($XBPS_DIGEST_CMD <(rpm2cpio "$curfile" | $TAR_CMD xf - $TAR_CMD_STDOUT))
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
msg_error "$pkgver: extracting $curfile to pipe.\n"
|
msg_error "$pkgver: extracting $curfile to pipe.\n"
|
||||||
fi
|
fi
|
||||||
|
@ -95,7 +95,7 @@ contents_cksum() {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
gem)
|
gem)
|
||||||
cksum=$($XBPS_DIGEST_CMD <(bsdtar -xf "$curfile" data.tar.gz --list | bsdtar -xzO ))
|
cksum=$($XBPS_DIGEST_CMD <($TAR_CMD -xf "$curfile" data.tar.gz $TAR_CMD_STDOUT | $TAR_CMD -xzO ))
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
|
msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
|
||||||
|
@ -210,6 +210,15 @@ hook() {
|
||||||
# Disable trap on ERR; the code is smart enough to report errors and abort.
|
# Disable trap on ERR; the code is smart enough to report errors and abort.
|
||||||
trap - ERR
|
trap - ERR
|
||||||
|
|
||||||
|
# Detect bsdtar and GNU tar (in that order of preference)
|
||||||
|
TAR_CMD="$(command -v bsdtar)"
|
||||||
|
if [ "$TAR_CMD" ]; then
|
||||||
|
TAR_CMD_STDOUT="--list"
|
||||||
|
else
|
||||||
|
TAR_CMD="$(command -v tar)"
|
||||||
|
TAR_CMD_STDOUT="--to-stdout"
|
||||||
|
fi
|
||||||
|
|
||||||
# Detect distfiles with obsolete checksum and purge them from the cache
|
# Detect distfiles with obsolete checksum and purge them from the cache
|
||||||
for f in ${distfiles}; do
|
for f in ${distfiles}; do
|
||||||
curfile="${f#*>}"
|
curfile="${f#*>}"
|
||||||
|
@ -273,6 +282,8 @@ hook() {
|
||||||
dfcount=$((dfcount + 1))
|
dfcount=$((dfcount + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
|
unset TAR_CMD TAR_CMD_STDOUT
|
||||||
|
|
||||||
if [ $errors -gt 0 ]; then
|
if [ $errors -gt 0 ]; then
|
||||||
msg_error "$pkgver: couldn't verify distfiles, exiting...\n"
|
msg_error "$pkgver: couldn't verify distfiles, exiting...\n"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue