[arch-dev-public] [PATCH 4/4] Added new cronjob script to clean up unneeded sourceballs

=?UTF-8?q?Eric=20B=E9langer?= snowmaniscool at gmail.com
Wed Oct 14 15:18:09 EDT 2009


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 at gmail.com>
---
 cron-jobs/sourceballs-cleanup |   61 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)
 create mode 100755 cron-jobs/sourceballs-cleanup

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



More information about the arch-dev-public mailing list