get-pup: Use a fork of pup on recent macOS
Use a fork of pup on macOS 10.13 and higher because the binary provided by the original project crashes immediately on those OS versions. See https://github.com/ericchiang/pup/issues/85pull/147/head
parent
8efe0b01fa
commit
98f824ef91
54
t/get-pup
54
t/get-pup
|
@ -1,8 +1,8 @@
|
||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
declare -r VERSION='0.4.0'
|
|
||||||
declare -r SHASUMS='\
|
declare -r SHASUMS='\
|
||||||
|
ec9522193516ad49c78d40a8163f1d92e98866892a11aadb7be584a975026a8a pup_69c02e189c2aaed331061ee436c39e72b830ef32_darwin_amd64.xz
|
||||||
75c27caa0008a9cc639beb7506077ad9f32facbffcc4e815e999eaf9588a527e pup_v0.4.0_darwin_386.zip
|
75c27caa0008a9cc639beb7506077ad9f32facbffcc4e815e999eaf9588a527e pup_v0.4.0_darwin_386.zip
|
||||||
c539a697efee2f8e56614a54cb3b215338e00de1f6a7c2fa93144ab6e1db8ebe pup_v0.4.0_darwin_amd64.zip
|
c539a697efee2f8e56614a54cb3b215338e00de1f6a7c2fa93144ab6e1db8ebe pup_v0.4.0_darwin_amd64.zip
|
||||||
259eee82c7d7d766f1b8f93a382be21dcfefebc855a9ce8124fd78717f9df439 pup_v0.4.0_dragonfly_amd64.zip
|
259eee82c7d7d766f1b8f93a382be21dcfefebc855a9ce8124fd78717f9df439 pup_v0.4.0_dragonfly_amd64.zip
|
||||||
|
@ -33,49 +33,73 @@ e965c6f04b897240d84c60e2c18226deb231a657c5583680f58a61051ff5a100 pup_v0.4.0_ope
|
||||||
6755cbd43e94eaf173689e93e914c7056a2249c2977e5b90024fb397f9b45ba4 pup_v0.4.0_windows_amd64.zip
|
6755cbd43e94eaf173689e93e914c7056a2249c2977e5b90024fb397f9b45ba4 pup_v0.4.0_windows_amd64.zip
|
||||||
'
|
'
|
||||||
|
|
||||||
declare -r BASEURL="https://github.com/ericchiang/pup/releases/download/v${VERSION}"
|
|
||||||
declare -r TDIR=$(dirname "$0")
|
declare -r TDIR=$(dirname "$0")
|
||||||
ARCH=''
|
|
||||||
OS=''
|
|
||||||
|
|
||||||
case $(uname -m) in
|
case $(uname -m) in
|
||||||
x86_64 | amd64 ) ARCH=amd64 ;;
|
x86_64 | amd64 ) ARCH=amd64 ;;
|
||||||
i[3456]86 ) ARCH=386 ;;
|
i[3456]86 ) ARCH=386 ;;
|
||||||
|
* ) ARCH= ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
OS=$(uname -s | tr 'A-Z' 'a-z')
|
OS=$(uname -s | tr 'A-Z' 'a-z')
|
||||||
case ${OS} in
|
case ${OS} in
|
||||||
linux | freebsd | openbsd | netbsd | darwin ) ;;
|
linux | freebsd | openbsd | netbsd | darwin ) ;;
|
||||||
* ) OS=''
|
* ) OS= ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# The binary of pup 0.4.0 for macOS provided by the original project
|
||||||
|
# crashes immediately on macOS 10.13 (Darwin 17) and up so use a fork:
|
||||||
|
# https://github.com/ericchiang/pup/issues/85
|
||||||
|
if [[ ${OS} = darwin && $(uname -r | cut -d. -f1) -ge 17 ]] ; then
|
||||||
|
USE_FORK=1
|
||||||
|
else
|
||||||
|
USE_FORK=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( USE_FORK )) ; then
|
||||||
|
declare -r VERSION=69c02e189c2aaed331061ee436c39e72b830ef32
|
||||||
|
declare -r DISTFILE="pup_${VERSION}_${OS}_${ARCH}.xz"
|
||||||
|
declare -r URL="https://github.com/frioux/pup/releases/download/untagged-${VERSION}/pup.mac.xz"
|
||||||
|
if ! command -v xz >/dev/null ; then
|
||||||
|
echo "xz not found" 1>&2
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
declare -r VERSION=0.4.0
|
||||||
|
declare -r DISTFILE="pup_v${VERSION}_${OS}_${ARCH}.zip"
|
||||||
|
declare -r URL="https://github.com/ericchiang/pup/releases/download/v${VERSION}/${DISTFILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z ${ARCH} || -z ${OS} ]] ; then
|
if [[ -z ${ARCH} || -z ${OS} ]] ; then
|
||||||
echo "pup ${VERSION} is not available for $(uname -s) on $(uname -m)" 1>&2
|
echo "pup ${VERSION} is not available for $(uname -s) on $(uname -m)" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
declare -r ZIPFILE="pup_v${VERSION}_${OS}_${ARCH}.zip"
|
EXPECT_SHA=
|
||||||
EXPECT_SHA=''
|
|
||||||
|
|
||||||
while read sum fname ; do
|
while read sum fname ; do
|
||||||
if [[ ${fname} = ${ZIPFILE} ]] ; then
|
if [[ ${fname} = ${DISTFILE} ]] ; then
|
||||||
EXPECT_SHA=${sum}
|
EXPECT_SHA=${sum}
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done <<< "${SHASUMS}"
|
done <<< "${SHASUMS}"
|
||||||
|
|
||||||
wget -cO "${TDIR}/${ZIPFILE}" "${BASEURL}/${ZIPFILE}"
|
wget -cO "${TDIR}/${DISTFILE}" "${URL}"
|
||||||
|
|
||||||
read -r _ GOT_SHA < <( openssl sha256 < "${TDIR}/${ZIPFILE}" )
|
read -r _ GOT_SHA < <( openssl sha256 < "${TDIR}/${DISTFILE}" )
|
||||||
if [[ ${EXPECT_SHA} = ${GOT_SHA} ]] ; then
|
if [[ ${EXPECT_SHA} = ${GOT_SHA} ]] ; then
|
||||||
echo "Checksum for ${ZIPFILE} verified :-)"
|
echo "Checksum for ${DISTFILE} verified :-)"
|
||||||
else
|
else
|
||||||
rm -f "${TDIR}/${ZIPFILE}" "${TDIR}/pup"
|
rm -f "${TDIR}/${DISTFILE}" "${TDIR}/pup"
|
||||||
echo "Checksum for ${ZIPFILE} does not match :-("
|
echo "Checksum for ${DISTFILE} does not match :-("
|
||||||
echo " Expected: ${EXPECT_SHA}"
|
echo " Expected: ${EXPECT_SHA}"
|
||||||
echo " Got: ${GOT_SHA}"
|
echo " Got: ${GOT_SHA}"
|
||||||
exit 2
|
exit 2
|
||||||
fi 1>&2
|
fi 1>&2
|
||||||
|
|
||||||
rm -f "${TDIR}/pup"
|
rm -f "${TDIR}/pup"
|
||||||
unzip "${TDIR}/${ZIPFILE}" pup -d "${TDIR}"
|
|
||||||
|
if (( USE_FORK )) ; then
|
||||||
|
(cd "${TDIR}" && xz -dk "${DISTFILE}" && mv "${DISTFILE%.*}" pup && chmod a+x pup)
|
||||||
|
else
|
||||||
|
unzip "${TDIR}/${DISTFILE}" pup -d "${TDIR}"
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue