#!/bin/bash if [ $# -ne 3 ]; then echo "usage: $(basename $0) " exit 1 fi if [ -f "/etc/makepkg.conf" ]; then #Get some config info . /etc/makepkg.conf else echo "/etc/makepkg.conf does not exist!" exit 1 fi packagename="$1" reponame="$2" arch="$3" ##### Arch specific stuff. TODO make this configurable ##### srcpath="/home/aaron/public_html/sources/" svnpath="file:///home/svn-packages/$packagename/" ############################################################ WORKDIR="/tmp/make-sourceball.$packagename.$UID" cleanup() { # unlock rm -rf "$WORKDIR" [ "$1" ] && exit $1 } ctrl_c() { echo "Interrupted" >&2 cleanup 0 } die() { echo "$*" >&2 cleanup 1 } create_srcpackage() { if [ -d "$1" ]; then pushd "$1" >/dev/null . "$BUILDSCRIPT" if ! /usr/bin/makepkg -gc >/dev/null 2>&1; then popd >/dev/null return 1 fi popd >/dev/null local pkg_file="${pkgname}-${pkgver}-${pkgrel}${SRCEXT}" if ! /usr/bin/bsdtar -czf "$pkg_file" "$1"; then return 2 fi echo ":: Source package complete: $pkg_file" if [ ! -d "$srcpath" ]; then mkdir -p "$srcpath" fi cp $pkg_file "$srcpath" return 0 fi } trap ctrl_c 2 trap cleanup 0 /bin/mkdir -p "$WORKDIR" cd "$WORKDIR" echo "Creating Source tarball for $packagename ($reponame-$arch)" if /usr/bin/svn export -q "$svnpath/repos/$reponame-$arch" $packagename; then create_srcpackage "$packagename" if [ $? -eq 0 ]; then exit 0 elif [ $? -eq 1 ]; then #trunk sometimes has updated URLs echo ":: Failed to download source, attempting trunk build" rm -rf "$packagename" if /usr/bin/svn export -q "$svnpath/trunk" "$packagename"; then create_srcpackage "$packagename" if [ $? -eq 0 ]; then echo ":: Source package complete: $pkg_file" exit 0 elif [ $? -eq 1 ]; then die ":: Failed to download source" elif [ $? -eq 2 ]; then die ":: Failed to compress package" else die ":: Unknown failure reason" fi fi exit 1 elif [ $? -eq 2 ]; then die ":: Failed to compress package" fi else die "Package '$packagename' does not exist in repo $reponame-$arch" fi