#!/bin/bash if [ $# -ne 3 ]; then echo "usage: $(basename $0) " exit 1 fi . "$(dirname $0)/db-functions" . "$(dirname $0)/config" packagebase="$1" reponame="$2" _arch="$3" ftppath="$FTP_BASE/$reponame/os" svnrepo="$reponame-$_arch" [ "$UID" = "" ] && UID=$(uid) WORKDIR="$TMPDIR/db-remove.$svnrepo.$UID" cleanup() { trap '' 0 2 # unlock repo_unlock $reponame $_arch rm -rf "$WORKDIR" [ "$1" ] && exit $1 } ctrl_c() { echo "Interrupted" >&2 cleanup 0 } die() { echo "$*" >&2 cleanup 1 } trap ctrl_c 2 trap cleanup 0 repo_lock $reponame $_arch /bin/mkdir -p "$WORKDIR" echo "==> Removing package '$packagebase' from '$reponame'..." >&2 cd "$WORKDIR" /usr/bin/svn checkout -N $SVNREPO checkout cd checkout /usr/bin/svn up -q $packagebase if [ -d "$packagebase/repos/$svnrepo" ]; then echo " Removing from subversion" . "$packagebase/repos/$svnrepo/$BUILDSCRIPT" /usr/bin/svn rm --force -q "$packagebase/repos/$svnrepo" /usr/bin/svn commit -q -m "$(basename $0): $packagebase removed by $(id -un)" else echo " Warning: $packagebase not found in $svnrepo" echo " Removing split packages is not supported" echo " You need to specify each sub package instead" pkgname=$packagebase fi cd "$WORKDIR" [ -d build/ ] || mkdir build if [ "$_arch" == "any" ]; then arches="i686 x86_64" else arches="$_arch" fi # copy the db file into our working area for architecture in $arches; do if [ -f "$ftppath/$architecture/$reponame$DBEXT" ]; then /bin/cp "$ftppath/$architecture/$reponame$DBEXT" build/ else echo "No database found at '$ftppath/$architecture', nothing more to do" exit 0 fi echo " Removing from $reponame DB file ($architecture)" cd build/ /usr/bin/repo-remove -q "$reponame$DBEXT" ${pkgname[@]} /bin/mv "$reponame$DBEXT" "$ftppath/$architecture" echo "Package files will be cleaned up automatically" cd .. done cleanup # vim: set ts=4 sw=4 noet ft=sh: