summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Bélanger <snowmaniscool@gmail.com>2009-10-14 15:18:09 -0400
committerAaron Griffin <aaronmgriffin@gmail.com>2009-10-26 13:56:33 -0700
commitee0820aa9c71e8a76f16b11c7ad77be7cb8e1ce6 (patch)
treeb245c8a8b6441557aa202eeb47e18ad2e0f7912a
parent96bcc18c5df5c7ef81a38c7338467ae0c75eca08 (diff)
Added new cronjob script to clean up unneeded sourceballsarchlinux/20091028
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>
-rwxr-xr-xcron-jobs/sourceballs-cleanup61
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