Re: [arch-dev-public] devtools and db-scripts plans

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




  - allow db-move to handle multiple packages
    (or add a script to help moving from community-testing)
We should kill these testing2whatever scripts and unify it completely in
db-move (including the testing2x case where the right repository is
automatically determined). Short-term it would probably suffice to
create community-testing2community.
Ask and ye shall receive. Attached is a patch db-move that incorporates the ability to handle multiple packages and cleans up the whitespaces. I know the whitespace patch should technically be separate but I had such a hard time reading db-move when I was editing it that I had to include it for my own sanity. Note: my patch hasn't been tested beyond echoing output to the screen... but it should work.
diff --git a/db-move b/db-move
index efd54e0..fab8527 100755
--- a/db-move
+++ b/db-move
@@ -1,17 +1,17 @@
 #!/bin/bash
 
-if [ $# -ne 4 ]; then
-	echo "usage: $(basename $0) <pkgname|packagebase> <repo-from> <repo-to> <arch>"
-	exit 1
+if [ $# -lt 4 ]; then
+    echo "usage: $(basename $0) <pkgname|packagebase> <repo-from> <repo-to> <arch>"
+    exit 1
 fi
 
 . "$(dirname $0)/db-functions"
 . "$(dirname $0)/config"
 
-packagebase="$1"
-repofrom="$2"
-repoto="$3"
-_arch="$4"
+args=($@)
+_arch="${args[${#args[@]}-1]}" && unset args[${#args[@]}-1]
+repoto="${args[${#args[@]}-1]}" && unset args[${#args[@]}-1]
+repofrom="${args[${#args[@]}-1]}" && unset args[${#args[@]}-1]
 
 ftppath_from="$FTP_BASE/$repofrom/os/"
 ftppath_to="$FTP_BASE/$repoto/os/"
@@ -24,100 +24,104 @@ WORKDIR="$TMPDIR/db-move.$svnrepo_from.$svnrepo_to.$UID"
 
 cleanup() {
     trap '' 0 2
-	# unlock
+    # unlock
     repo_unlock $repoto $_arch
     repo_unlock $repofrom $_arch
-	rm -rf "$WORKDIR"
-	[ "$1" ] && exit $1
+    rm -rf "$WORKDIR"
+    [ "$1" ] && exit $1
 }
 
 ctrl_c() {
-	echo "Interrupted" >&2
-	cleanup 0
+    echo "Interrupted" >&2
+    cleanup 0
 }
 
 die() {
-	echo "$*" >&2
-	cleanup 1
+    echo "$*" >&2
+    cleanup 1
 }
 
-trap ctrl_c 2
-trap cleanup 0
+for pkgbase in ${args[@]}; do
+    echo "==> Moving package '$pkgbase'"
 
-repo_lock $repoto $_arch
-repo_lock $repofrom $_arch
+    trap ctrl_c 2
+    trap cleanup 0
 
-/bin/mkdir -p "$WORKDIR"
+    repo_lock $repoto $_arch
+    repo_lock $repofrom $_arch
 
-cd "$WORKDIR"
-/usr/bin/svn checkout -N $SVNREPO checkout
-cd checkout
+    /bin/mkdir -p "$WORKDIR"
 
-/usr/bin/svn up -q $packagebase
-if [ -d "$packagebase/repos/$svnrepo_from" ]; then
-    . "$packagebase/repos/$svnrepo_from/$BUILDSCRIPT"
+    cd "$WORKDIR"
+    /usr/bin/svn checkout -N $SVNREPO checkout
+    cd checkout
+
+    /usr/bin/svn up -q $packagebase
+    if [ -d "$packagebase/repos/$svnrepo_from" ]; then
+        . "$packagebase/repos/$svnrepo_from/$BUILDSCRIPT"
     
-    for i in ${pkgname[@]}; do
-        _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
-        if [ ! -f "$ftppath_from/${_arch}/$_pkgfile" ]; then
-            die "error: package file '$_pkgfile' not found in repo '$repofrom'"
+        for i in ${pkgname[@]}; do
+            _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
+            if [ ! -f "$ftppath_from/${_arch}/$_pkgfile" ]; then
+                die "error: package file '$_pkgfile' not found in repo '$repofrom'"
+            fi
+        done
+
+        if [ -d "$packagebase/repos/$svnrepo_to" ]; then
+            echo "    Removing existing package from subversion"
+            /usr/bin/svn rm --force -q "$packagebase/repos/$svnrepo_to"
+            /usr/bin/svn commit -q -m "$(basename $0): $packagebase removed by $(id -un) for move to $repoto"
         fi
-    done
 
-    if [ -d "$packagebase/repos/$svnrepo_to" ]; then
-        echo "    Removing existing package from subversion"
-        /usr/bin/svn rm --force -q "$packagebase/repos/$svnrepo_to"
-        /usr/bin/svn commit -q -m "$(basename $0): $packagebase removed by $(id -un) for move to $repoto"
-    fi
+        echo "    Moving svn entries"
+        /usr/bin/svn mv -r HEAD "$packagebase/repos/$svnrepo_from" "$packagebase/repos/$svnrepo_to"
+        /usr/bin/svn commit -m "$(basename $0): moved $packagebase from [$repofrom] to [$repoto] ($_arch)"
 
-    echo "    Moving svn entries"
-    /usr/bin/svn mv -r HEAD "$packagebase/repos/$svnrepo_from" "$packagebase/repos/$svnrepo_to"
-    /usr/bin/svn commit -m "$(basename $0): moved $packagebase from [$repofrom] to [$repoto] ($_arch)"
+        echo "    Moving package file and updating DBs"
+        cd "$WORKDIR"
+        [ -d build/ ] || mkdir build
+        cd build/
 
-    echo "    Moving package file and updating DBs"
-    cd "$WORKDIR"
-    [ -d build/ ] || mkdir build
-    cd build/
-
-	if [ "${_arch}" == "any" ]; then
-		arches="i686 x86_64"
-	else
-		arches="${_arch}"
-	fi
-
-    for architecture in $arches; do
-		# copy the db file into our working area
-		if [ -f "$ftppath_from/$architecture/$repofrom$DBEXT" ]; then
-		    /bin/cp "$ftppath_from/$architecture/$repofrom$DBEXT" .
-		    /usr/bin/repo-remove -q "$repofrom$DBEXT" ${pkgname[@]} || die "Error in repo-remove"
-		    #use '*' to move the old DB too
-		    mv $repofrom$DBEXT* "$ftppath_from/$architecture"
-		    echo "    Package files will be cleaned up automatically"
-		fi
-
-		if [ -f "$ftppath_to/$architecture/$repoto$DBEXT" ]; then
-		    /bin/cp "$ftppath_to/$architecture/$repoto$DBEXT" .
-		fi
-
-		for i in ${pkgname[@]}; do
-			_pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
-			/bin/cp "$ftppath_from/$architecture/$_pkgfile" .
-			/usr/bin/repo-add -q "$repoto$DBEXT" $_pkgfile || die "Error in repo-add $_pkgfile"
-		done
-		#use '*' to move the old DB too
-		mv $repoto$DBEXT* $ftppath_to/$architecture
-        for i in ${pkgname[@]}; do
-            _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
-            if [ "${_arch}" == "any" ]; then
-                mv ${_pkgfile} $ftppath_to/any
-                ln -s ../any/${_pkgfile} $ftppath_to/$architecture/
-            else
-                mv ${_pkgfile} $ftppath_to/$architecture
+        if [ "${_arch}" == "any" ]; then
+            arches="i686 x86_64"
+        else
+            arches="${_arch}"
+        fi
+
+        for architecture in $arches; do
+            # copy the db file into our working area
+            if [ -f "$ftppath_from/$architecture/$repofrom$DBEXT" ]; then
+                /bin/cp "$ftppath_from/$architecture/$repofrom$DBEXT" .
+                /usr/bin/repo-remove -q "$repofrom$DBEXT" ${pkgname[@]} || die "Error in repo-remove"
+                #use '*' to move the old DB too
+                mv $repofrom$DBEXT* "$ftppath_from/$architecture"
+                echo "    Package files will be cleaned up automatically"
             fi
+
+            if [ -f "$ftppath_to/$architecture/$repoto$DBEXT" ]; then
+                /bin/cp "$ftppath_to/$architecture/$repoto$DBEXT" .
+            fi
+
+            for i in ${pkgname[@]}; do
+                _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
+                /bin/cp "$ftppath_from/$architecture/$_pkgfile" .
+                /usr/bin/repo-add -q "$repoto$DBEXT" $_pkgfile || die "Error in repo-add $_pkgfile"
+            done
+            #use '*' to move the old DB too
+            mv $repoto$DBEXT* $ftppath_to/$architecture
+            for i in ${pkgname[@]}; do
+                _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
+                if [ "${_arch}" == "any" ]; then
+                    mv ${_pkgfile} $ftppath_to/any
+                    ln -s ../any/${_pkgfile} $ftppath_to/$architecture/
+                else
+                    mv ${_pkgfile} $ftppath_to/$architecture
+                fi
+            done
         done
-	done
-else
-    die "Error: $packagebase is not in repo $repofrom"
-fi
+    else
+        die "Error: $packagebase is not in repo $repofrom"
+    fi
+done
 
 cleanup

[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux