diff options
author | Eric Bélanger <snowmaniscool@gmail.com> | 2009-10-14 21:18:09 +0200 |
---|---|---|
committer | Aaron Griffin <aaronmgriffin@gmail.com> | 2009-10-26 21:56:33 +0100 |
commit | ee0820aa9c71e8a76f16b11c7ad77be7cb8e1ce6 (patch) | |
tree | b245c8a8b6441557aa202eeb47e18ad2e0f7912a /cron-jobs/sourceballs-cleanup | |
parent | 96bcc18c5df5c7ef81a38c7338467ae0c75eca08 (diff) | |
download | dbscripts-ee0820aa9c71e8a76f16b11c7ad77be7cb8e1ce6.tar.gz dbscripts-ee0820aa9c71e8a76f16b11c7ad77be7cb8e1ce6.tar.xz |
Added new cronjob script to clean up unneeded sourceballs
This script is intended to be a weekly cron-job. It supplements the current sourceballs cleanup in make-sourceball that only removes the old sourceballs. This script removes the sourceballs of packages that were either removed completely from the repo or moved to a splitted package. It also checks the license of the packages which have a sourceball to see, in case of a license change, if the hosting of the sources is still necessary.
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Diffstat (limited to 'cron-jobs/sourceballs-cleanup')
-rwxr-xr-x | cron-jobs/sourceballs-cleanup | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/cron-jobs/sourceballs-cleanup b/cron-jobs/sourceballs-cleanup new file mode 100755 index 0000000..c8d7b15 --- /dev/null +++ b/cron-jobs/sourceballs-cleanup @@ -0,0 +1,61 @@ +#!/bin/bash + +. "$(dirname $0)/../db-functions" +. "$(dirname $0)/../config" + +srcpath="$FTP_BASE/sources/" +logfile="$srcpath/cleanup.txt" + +LOCKFILE="/tmp/.sourceball-cleanup.lock" +WORKDIR="/tmp/sourceball-cleanup.$packagename.$UID" + +cleanup () { + restore_umask + rm -rf "$WORKDIR" + rm -f "$LOCKFILE" + exit 0 +} + +ctrl_c() { + echo "Interrupted" >&2 + cleanup 0 +} + +if [ -f "$LOCKFILE" ]; then + owner="$(/usr/bin/stat -c %U $LOCKFILE)" + echo "error: source tarball generation is already in progress (started by $owner)" + exit 1 +fi + +trap cleanup 0 +trap ctrl_c 2 + +/bin/touch "$LOCKFILE" + +#adjust the nice level to run at a lower priority +/usr/bin/renice +10 -p $$ > /dev/null + +set_umask +/bin/mkdir -p "$WORKDIR" +cd "$WORKDIR" + +[ -e "$logfile" ] && /bin/mv "$logfile" "$logfile.old" +echo "Orphaned sourceballs:" > "$logfile" + +for sourceball in "$srcpath"/*$SRCEXT; do + packagename=$(basename $sourceball) + packagename=${packagename%-*-*$SRCEXT} + + if ! /usr/bin/svn export -q --force "$SVNREPO/$packagename" "$packagename" >/dev/null 2>&1 ; then + echo "$packagename : no longer in svn. Removing sourceball." >> "$logfile" + mv $sourceball $SOURCE_CLEANUP_DESTDIR + elif [ -z "$(ls -A "$packagename/repos")" ]; then + echo "$packagename : no longer in repos but trunk is still in svn. Removing sourceball." >> "$logfile" + mv $sourceball $SOURCE_CLEANUP_DESTDIR + elif ! source "$packagename/trunk/$BUILDSCRIPT" && chk_license ${license[@]}; then + echo "$packagename : source hosting no longer required by license. Removing sourceball." >> "$logfile" + mv $sourceball $SOURCE_CLEANUP_DESTDIR + fi +done + +cleanup 0 |