On Wed, Mar 11, 2009 at 11:26 AM, Abhishek Dasgupta <[email protected]> wrote: > 2009/3/11 Aaron Griffin <[email protected]>: >> I guess the only thing this DOESN'T take into account is the >> symlinking part, but that would just be a single "special case" when >> copying >> > > Modified patch based on the any-arch branch: > (I've added SVN check for ANYPKGS separately and symlinks) > > --- db-update 2009-03-11 21:52:58.000000000 +0530 > +++ db-update 2009-03-11 21:46:46.000000000 +0530 > @@ -79,6 +79,7 @@ > current_arch="$A" > > ftppath="$FTP_BASE/$reponame/os/$current_arch/" > + ftppath_any="$FTP_BASE/$reponame/os/any/" > > if [ ! -d "$ftppath" ]; then > echo "FTP path for this repo ($reponame) is missing" > @@ -105,6 +106,7 @@ > to_add="" > if [ -d "$stagedir" ]; then > ADDPKGS="$(/bin/ls $stagedir/*-${current_arch}$PKGEXT > 2>/dev/null)" > + ANYPKGS="$(/bin/ls $stagedir/*-any$PKGEXT 2>/dev/null)" > fi > > if [ -n "$ADDPKGS" ]; then > @@ -145,6 +147,30 @@ > fi > done > > + for pkg in $ANYPKGS; do > + _pkgfile=$(basename $pkg) > + _pkgname="$(getpkgname $pkg)" > + svnrepo="$reponame-any" > + echo " Validating package arch (any) $_pkgname" > + if ! check_pkg_arch "$pkg" "any"; then > + echo " ERROR: $_pkgfile is not architecture > independent!" > + else > + echo " Checking SVN for $_pkgname" > + /usr/bin/svn up -q $_pkgname > + if [ -d "$_pkgname/repos/$svnrepo" ]; then > + . > "$_pkgname/repos/$svnrepo/$BUILDSCRIPT" > + if [ "$_pkgfile" = > "$pkgname-$pkgver-$pkgrel-any$PKGEXT" ]; then > + to_add="$to_add $pkg" > + else > + echo " WARNING: $_pkgfile > does not match $BUILDSCRIPT in $svnrepo" > + fi > + else > + echo " WARNING: Package $_pkgname > not found in $svnrepo" > + fi > + fi > + done > + > + > if [ -n "$to_add" ]; then > cd "$WORKDIR/build/" > for f in $to_add; do /bin/cp "$f" .; done > @@ -164,12 +190,16 @@ > # 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 > + for f in "$WORKDIR/build/"*$current_arch.pkg.tar.gz; do > if ! /bin/cp "$f" "$ftppath"; then > die "error: failure while copying files to > $ftppath" > fi > done > - > + for f in "$WORKDIR/build/"*any.pkg.tar.gz; do > + /bin/cp "$f" "$ftppath_any" || die "error: failure > while copying > files to $ftppath_any" > + ln -s "$ftppath_any/$f" "$ftppath/$f" || die "error: > failed to > make link for $f." > + done > + /bin/cp "$WORKDIR/build/$reponame.db"* "$ftppath" || die > "failed to > move repository $reponame-$A". > else > echo "Nothing to copy, no work done" > fi
Committed. One problem I see is that the "rm $to_add" will delete the any packages for the first arch, so they won't be processed for the next arch in the loop. I committed the patch anyway, but that will still need to be fixed
