[aur-general] [PATCH] initial support for any architecture.

Abhishek Dasgupta abhidg at gmail.com
Wed Mar 11 09:27:47 EDT 2009


This patch adds initial support for any architecture.
It assumes that there'll be a repo-any directory in repos/
from which it'll pull the PKGBUILDs. Also the architectureo
independent packages are assumed to be in $reponame/os/any.

This commit does not fix anything going wrong in the cron-jobs
or misc-scripts folder. Also this commit contain any helper
scripts for the any architecture corresponding to db-core or
testing2x.

Signed-off-by: Abhishek Dasgupta <abhidg at gmail.com>
---
 db-move   |   48 ++++++++++++++++++++++++----------------
 db-remove |   33 +++++++++++++++++----------
 db-update |   72 +++++++++++++++++++++++++++++++++++++++++++++---------------
 3 files changed, 104 insertions(+), 49 deletions(-)

diff --git a/db-move b/db-move
index ff9677b..aac0e4e 100755
--- a/db-move
+++ b/db-move
@@ -1,6 +1,27 @@
 #!/bin/bash
 # Originally from Pierre's testing2extra script
 
+process_db_move() {
+
+    # copy the db file into our working area
+    if [ -f "$ftppath_from/$1/$repofrom.db.tar.$DB_COMPRESSION" ]; then
+        /bin/cp "$ftppath_from/$1/$repofrom.db.tar.$DB_COMPRESSION" .
+        /usr/bin/repo-remove -q "$repofrom.db.tar.$DB_COMPRESSION" $packagename || die "Error in repo-remove"
+        #use '*' to move the old DB too
+        mv $repofrom.db.tar.$DB_COMPRESSION* $ftppath_from/$1
+        echo "    Package files will be cleaned up automatically"
+    fi
+
+    if [ -f "$ftppath_to/$1/$repoto.db.tar.$DB_COMPRESSION" ]; then
+        /bin/cp "$ftppath_to/$1/$repoto.db.tar.$DB_COMPRESSION" .
+    fi
+
+    /bin/cp "$ftppath_from/$1/$_pkgfile" .
+    /usr/bin/repo-add -q "$repoto.db.tar.$DB_COMPRESSION" $_pkgfile || die "Error in repo-add"
+    #use '*' to move the old DB too
+    mv $repoto.db.tar.$DB_COMPRESSION* $_pkgfile $ftppath_to/$1
+
+}
 if [ $# -ne 4 ]; then
 	echo "usage: $(basename $0) <pkgname> <repo-from> <repo-to> <arch>"
 	exit 1
@@ -17,8 +38,8 @@ _arch="$4"
 
 export CARCH="$_arch"
 
-ftppath_from="$FTP_BASE/$repofrom/os/$_arch/"
-ftppath_to="$FTP_BASE/$repoto/os/$_arch/"
+ftppath_from="$FTP_BASE/$repofrom/os/"
+ftppath_to="$FTP_BASE/$repoto/os/"
 svnrepo_from="$repofrom-$_arch"
 svnrepo_to="$repoto-$_arch"
 
@@ -62,7 +83,7 @@ if [ -d "$packagename/repos/$svnrepo_from" ]; then
     . "$packagename/repos/$svnrepo_from/$BUILDSCRIPT"
     _pkgfile="$pkgname-$pkgver-$pkgrel-$_arch$PKGEXT"
 
-    if [ ! -f "$ftppath_from/$_pkgfile" ]; then
+    if [ ! -f "$ftppath_from/$_arch/$_pkgfile" ]; then
         die "error: package file '$_pkgfile' not found in repo '$repofrom'"
     fi
 
@@ -81,23 +102,12 @@ if [ -d "$packagename/repos/$svnrepo_from" ]; then
     [ -d build/ ] || mkdir build
     cd build/
 
-    # copy the db file into our working area
-    if [ -f "$ftppath_from/$repofrom.db.tar.$DB_COMPRESSION" ]; then
-        /bin/cp "$ftppath_from/$repofrom.db.tar.$DB_COMPRESSION" .
-        /usr/bin/repo-remove -q "$repofrom.db.tar.$DB_COMPRESSION" $packagename || die "Error in repo-remove"
-        #use '*' to move the old DB too
-        mv $repofrom.db.tar.$DB_COMPRESSION* $ftppath_from
-        echo "    Package files will be cleaned up automatically"
+    if [ "$_arch" == "any" ]; then
+	process_db_move i686
+	process_db_move x86_64
+    else
+	process_db_move $_arch
     fi
-
-    if [ -f "$ftppath_to/$repoto.db.tar.$DB_COMPRESSION" ]; then
-        /bin/cp "$ftppath_to/$repoto.db.tar.$DB_COMPRESSION" .
-    fi
-
-    /bin/cp "$ftppath_from/$_pkgfile" .
-    /usr/bin/repo-add -q "$repoto.db.tar.$DB_COMPRESSION" $_pkgfile || die "Error in repo-add"
-    #use '*' to move the old DB too
-    mv $repoto.db.tar.$DB_COMPRESSION* $_pkgfile $ftppath_to
 else
     die "Error: $packagename is not in repo $repofrom"
 fi
diff --git a/db-remove b/db-remove
index acc849d..6432d94 100755
--- a/db-remove
+++ b/db-remove
@@ -1,5 +1,21 @@
 #!/bin/bash
 
+process_db_files() {
+	# copy the db file into our working area
+	if [ -f "$ftppath/$1/$reponame.db.tar.$DB_COMPRESSION" ]; then
+		/bin/cp "$ftppath/$1/$reponame.db.tar.$DB_COMPRESSION" build/
+	else
+		echo "No database found at '$ftpdir', nothing more to do"
+		exit 0
+	fi
+
+	echo "    Removing from $reponame DB file"
+	cd build/
+	/usr/bin/repo-remove -q "$reponame.db.tar.$DB_COMPRESSION" $packagename
+
+	/bin/cp "$reponame.db.tar.$DB_COMPRESSION" "$ftppath/$1/"
+}
+
 if [ $# -ne 3 ]; then
 	echo "usage: $(basename $0) <pkgname> <reponame> <arch>"
 	exit 1
@@ -15,7 +31,7 @@ arch="$3"
 
 export CARCH="$arch"
 
-ftppath="$FTP_BASE/$reponame/os/$arch/"
+ftppath="$FTP_BASE/$reponame/os/"
 svnrepo="$reponame-$arch"
 
 [ "$UID" = "" ] && UID=$(uid)
@@ -64,20 +80,13 @@ fi
 cd "$WORKDIR"
 [ -d build/ ] || mkdir build
 
-# copy the db file into our working area
-if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then
-	/bin/cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/
+if [ "$arch" == "any" ]; then
+	process_db_files i686
+	process_db_files x86_64
 else
-	echo "No database found at '$ftpdir', nothing more to do"
-	exit 0
+	process_db_files $arch
 fi
 
-echo "    Removing from $reponame DB file"
-cd build/
-/usr/bin/repo-remove -q "$reponame.db.tar.$DB_COMPRESSION" $packagename
-
-/bin/cp "$reponame.db.tar.$DB_COMPRESSION" "$ftppath/"
-
 echo "Package files will be cleaned up automatically"
 
 cleanup
diff --git a/db-update b/db-update
index 77af39f..f51f470 100755
--- a/db-update
+++ b/db-update
@@ -15,6 +15,7 @@ _arch="$2"
 export CARCH="$_arch"
 
 ftppath="$FTP_BASE/$reponame/os/$_arch/"
+ftppath_base="$FTP_BASE/$reponame/os/"
 svnrepo="$reponame-$_arch"
 stagedir="$STAGING/$reponame"
 
@@ -72,10 +73,21 @@ repo_lock $reponame $_arch
 cd "$WORKDIR"
 
 # copy the db file into our working area
-if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then
-	/bin/cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/
+if [ "$_arch" == "any" ]; then
+	for architecture in i686 x86_64; do
+		if [ -f "$ftppath_base/$architecture/$reponame.db.tar.gz.$DB_COMPRESSION" ]; then
+			/bin/cp "$ftppath_base/$architecture/$reponame.db.tar.gz.$DB_COMPRESSION" build/$reponame-i686.db.tar.gz
+		else
+			touch "build/$reponame-$architecture.db.tar.$DB_COMPRESSION"
+		fi
+	done
+else
+	if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then
+		/bin/cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/
+	else
+		touch "build/$reponame.db.tar.$DB_COMPRESSION"
+	fi
 fi
-
 echo "Updating DB for $reponame $_arch"
 
 if [ -d "${stagedir}64" ]; then
@@ -106,11 +118,11 @@ fi
 if [ -n "$ADDPKGS" ]; then
 
 	echo "==> Copying DB file from '$reponame'..." >&2
-	if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then
-		/bin/cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/
-	else
-		touch "build/$reponame.db.tar.$DB_COMPRESSION"
-	fi
+#	if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then
+#		/bin/cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/
+#	else
+#		touch "build/$reponame.db.tar.$DB_COMPRESSION"
+#	fi
 
 	echo "==> Processing new/updated packages for repository '$reponame'..." >&2
 
@@ -147,10 +159,19 @@ if [ -n "$ADDPKGS" ]; then
 
 		pkgs=""
 		for pkg in $to_add; do pkgs="$pkgs $(basename $pkg)"; done
-
-		/usr/bin/repo-add -q "$reponame.db.tar.$DB_COMPRESSION" $pkgs
+		if [ "$_arch" == "any" ]; then
+			/usr/bin/repo-add -q "$reponame-i686.db.tar.$DB_COMPRESSION" $pkgs
+			/usr/bin/repo-add -q "$reponame-x86_64.db.tar.$DB_COMPRESSION" $pkgs
+		else
+			/usr/bin/repo-add -q "$reponame.db.tar.$DB_COMPRESSION" $pkgs
+		fi
 	else
-		rm -f "build/$reponame.db.tar.$DB_COMPRESSION"
+		if [ "$_arch" == "any" ]; then
+			rm -f "build/$reponame-i686.db.tar.gz"
+			rm -f "build/$reponame-x86_64.db.tar.gz"
+		else
+			rm -f "build/$reponame.db.tar.$DB_COMPRESSION"
+		fi
 		echo "Errors found when adding packages"
 	fi
 else
@@ -159,13 +180,28 @@ fi
 
 # if non empty, move all build dirs
 if [ $(/bin/ls "$WORKDIR/build/" 2>/dev/null | wc -l) != 0 ]; then
-	echo "Copying new files to '$ftppath'"
-	for f in "$WORKDIR/build/"*; do
-		if ! /bin/cp "$f" "$ftppath"; then
-			die "error: failure while copying files to $ftppath"
-		fi
-	done
-
+	if [ "$_arch" != "any" ]; then
+		echo "Copying new files to '$ftppath'"
+		for f in "$WORKDIR/build/"*; do
+			if ! /bin/cp "$f" "$ftppath"; then
+				die "error: failure while copying files to $ftppath"
+			fi
+		done
+	else
+		echo "Copying architecture-independent packages..."
+		for f in "$WORKDIR/build/"*.pkg.tar.gz; do
+			if ! /bin/cp "$f" "$ftppath"; then
+				die "error: failure while copying $f to $ftppath"
+			fi
+		# Make link to arch-any package from os/{i686,x86_64} directories
+			ln -s "$ftppath/$f" "$ftppath_base/i686/"
+			ln -s "$ftppath/$f" "$ftppath_base/x86_64/"		
+		for architecture in i686 x86_64; do
+			if ! /bin/cp "$reponame-$architecture.db.tar.$DB_COMPRESSION" "$ftppath_base/$architecture/$reponame.db.tar.$DB_COMPRESSION"; then
+				die "error: failed to transfer $architecture repository database."
+			fi
+		done
+	fi
 else
 	echo "Nothing to copy, no work done"
 fi
-- 
1.6.2


-- 
Abhishek Dasgupta <http://abhidg.mine.nu>
GPG 67972DOF pgp.mit.edu
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://www.archlinux.org/pipermail/aur-general/attachments/20090311/c94ecbb4/attachment.pgp>


More information about the aur-general mailing list