|
|
@@ -0,0 +1,94 @@ |
|
|
|
#/bin/sh |
|
|
|
# This script eases updating the waf build system. Make sure wget and gpg are |
|
|
|
# installed and run: |
|
|
|
# $ ./waf-update.sh <version> |
|
|
|
# This script will deploy the build system in source form as to ease downtream |
|
|
|
# maintainence at Debian/Ubuntu. For example see [1] and the pages it links to. |
|
|
|
# [1] https://wiki.debian.org/UnpackWaf |
|
|
|
|
|
|
|
script=`basename ${0}` |
|
|
|
|
|
|
|
msg() { |
|
|
|
echo "${script}: ${@}" |
|
|
|
} |
|
|
|
|
|
|
|
die() { |
|
|
|
msg "${@}" |
|
|
|
exit 1 |
|
|
|
} |
|
|
|
|
|
|
|
test $# -ne 1 && die "usage: ${script} <version>" |
|
|
|
version=${1} |
|
|
|
|
|
|
|
homepage=https://waf.io |
|
|
|
|
|
|
|
# Fetch the pubkey from the main homepage. |
|
|
|
pubkey=tnagy1024.asc |
|
|
|
if ! test -e ${pubkey} |
|
|
|
then |
|
|
|
wget ${homepage}/${pubkey} || die "wget failed" |
|
|
|
fi |
|
|
|
|
|
|
|
# The key can also be found at freehackers. |
|
|
|
pubkey2=${pubkey}.2 |
|
|
|
if ! test -e ${pubkey2} |
|
|
|
then |
|
|
|
wget http://freehackers.org/~tnagy/${pubkey} -O ${pubkey2} || die "wget failed" |
|
|
|
fi |
|
|
|
|
|
|
|
# Make sure the keys are identic. |
|
|
|
cmp ${pubkey} ${pubkey2} |
|
|
|
status=$? |
|
|
|
if test $status -eq 0 |
|
|
|
then |
|
|
|
msg "${pubkey} and ${pubkey2} match" |
|
|
|
elif test $status -eq 1 |
|
|
|
then |
|
|
|
die "${pubkey} and ${pubkey2} did not match" |
|
|
|
else |
|
|
|
die "cmp failed" |
|
|
|
fi |
|
|
|
|
|
|
|
# Now that the keys match, it is likely that this key is the real key so import |
|
|
|
# it. |
|
|
|
gpg --import ${pubkey} || die "could not import public key" |
|
|
|
|
|
|
|
waf_dir=waf-${version} |
|
|
|
waf_tar=${waf_dir}.tar.bz2 |
|
|
|
waf_asc=${waf_tar}.asc |
|
|
|
|
|
|
|
if ! test -e ${waf_tar} |
|
|
|
then |
|
|
|
wget ${homepage}/${waf_tar} || die "wget failed" |
|
|
|
fi |
|
|
|
|
|
|
|
if ! test -e ${waf_asc} |
|
|
|
then |
|
|
|
wget ${homepage}/${waf_asc} || die "wget failed" |
|
|
|
fi |
|
|
|
|
|
|
|
gpg --verify ${waf_asc} |
|
|
|
if test $? -eq 0 |
|
|
|
then |
|
|
|
msg "tarball verification succeeded" |
|
|
|
else |
|
|
|
die "tarball verificatin failed" |
|
|
|
fi |
|
|
|
|
|
|
|
if test -d ${waf_dir} |
|
|
|
then |
|
|
|
rm -rf ${waf_dir} || die "could not remove old waf directory" |
|
|
|
fi |
|
|
|
|
|
|
|
tar xjf ${waf_tar} || die "could not unpack tarball" |
|
|
|
|
|
|
|
# Remove the old waflib directory and replace it with the new. |
|
|
|
git rm -rf waflib || die "could not remove old waflib directory" |
|
|
|
cp -R ${waf_dir}/waflib . || die "could not copy waflib directory" |
|
|
|
git add waflib || die "could not add waflib to version control" |
|
|
|
|
|
|
|
# Copy the waf-light script to the toplevel directory and rename it to waf so |
|
|
|
# that the usual ./waf [args] can be used. |
|
|
|
cp ${waf_dir}/waf-light waf || die "could not copy waf-light" |
|
|
|
|
|
|
|
exit 0 |