diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2010-11-23 12:04:30 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2010-11-23 12:04:30 +0100 |
commit | 4d16d294f338d5e90a92acb2096bca77e9e924e7 (patch) | |
tree | 7c977635edc813dfb1a766d214d56ecf63a49867 /misc-scripts/sourceballs-cleanup | |
parent | 1dca721c5149f69067f38d4a33dabbebef98009b (diff) |
Rewrite sourceballs to increase performance and reliability
* Decrease file stats as much as possible
* Create a list of all packages and meta data only once
* Create a list of available source packages only once
* Create a list of expected packages only once
* Combine all three scripts into one to share data and code
* Use as much information from the db files as possible and avoid using svn
* Avoid attempting to create the same source package twice
Logic works as follows:
1) create a list of all packages
2) Check for each package if we need a src package and create one
3) During this process create a list of all src packages that should be there
4) Diff both lists for the cleanup
Diffstat (limited to 'misc-scripts/sourceballs-cleanup')
-rwxr-xr-x | misc-scripts/sourceballs-cleanup | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/misc-scripts/sourceballs-cleanup b/misc-scripts/sourceballs-cleanup deleted file mode 100755 index 595f501..0000000 --- a/misc-scripts/sourceballs-cleanup +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -. "$(dirname $0)/../db-functions" -. "$(dirname $0)/../config" - -script_lock - -${CLEANUP_DRYRUN} && warning 'dry run mode is active' - -remove_old() { - if [ -d "$1" ]; then - pushd "$1" >/dev/null - PKGVERS="" - for repo in *; do - cd "$repo" - if [ -f PKGBUILD ]; then - pkgver=$(. PKGBUILD; echo ${pkgver}) - pkgrel=$(. PKGBUILD; echo ${pkgrel}) - PKGVERS="$PKGVERS $pkgver-$pkgrel" - else - error "PKGBUILD not found in $1/$repo" - fi - cd .. - done - - for srcpkg in "${FTP_BASE}/${SRCPOOL}/$packagename-"*; do - [ -f "$srcpkg" ] || continue - if [ "$(pkgname_from_src $srcpkg)" == "$packagename" ]; then - skip=0 - pver="$(pkgver_from_src $srcpkg)" - for v in $PKGVERS; do - if [ "$v" = "$pver" ]; then - skip=1 - break - fi - done - if [ $skip -ne 1 ]; then - ${CLEANUP_DRYRUN} || mv "$srcpkg" $SOURCE_CLEANUP_DESTDIR - fi - fi - done - - popd >/dev/null - fi -} - -#adjust the nice level to run at a lower priority -/usr/bin/renice +10 -p $$ > /dev/null - -set_umask -cd "$WORKDIR" - -for sourceball in "${FTP_BASE}/${SRCPOOL}"/*$SRCEXT; do - [ -f "$sourceball" ] || continue - packagename=$(basename $sourceball) - packagename=${packagename%-*-*$SRCEXT} - - if grep -q "^${packagename}\$" "$(dirname $0)/../cron-jobs/sourceballs.skip"; then - msg "$packagename : package found in sourceballs.skip. Removing sourceball." - ${CLEANUP_DRYRUN} || mv $sourceball $SOURCE_CLEANUP_DESTDIR - fi - if ! /usr/bin/svn export -q --force "$SVNREPO/$packagename" "$packagename" >/dev/null 2>&1; then - if [ $? -ne 1 ]; then - error "$packagename : svn died during export. Skipping sourceball." - else - msg "$packagename : no longer in svn. Removing sourceball." - ${CLEANUP_DRYRUN} || mv $sourceball $SOURCE_CLEANUP_DESTDIR - fi - elif [ -z "$(ls -A "$packagename/repos")" ]; then - warning "$packagename : no longer in repos but trunk is still in svn. Removing sourceball." - ${CLEANUP_DRYRUN} || mv $sourceball $SOURCE_CLEANUP_DESTDIR - elif ! chk_license $(. "$packagename/trunk/PKGBUILD"; echo ${license[@]}); then - if ! grep -q "^${packagename}\$" "$(dirname $0)/../cron-jobs/sourceballs.force"; then - msg "$packagename : source hosting no longer required by license. Removing sourceball." - ${CLEANUP_DRYRUN} || mv $sourceball $SOURCE_CLEANUP_DESTDIR - fi - else - remove_old "$packagename/repos/" - fi -done - -script_unlock |