| @@ -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 | |||