diff options
Diffstat (limited to 'db-update')
-rwxr-xr-x | db-update | 206 |
1 files changed, 106 insertions, 100 deletions
@@ -1,7 +1,7 @@ #!/bin/bash -if [ $# -ne 2 ]; then - echo "usage: $(basename $0) <reponame> <arch>" +if [ $# -ne 1 ]; then + echo "usage: $(basename $0) <reponame>" exit 1 fi @@ -10,30 +10,39 @@ fi source_makepkg reponame="$1" -_arch="$2" - -export CARCH="$_arch" - -ftppath="$FTP_BASE/$reponame/os/$_arch/" -svnrepo="$reponame-$_arch" -stagedir="$STAGING/$reponame" +current_arch="" [ "$UID" = "" ] && UID=$(uid) WORKDIR="$TMPDIR/db-update.$svnrepo.$UID" ADDPKGS="" -if [ ! -d "$ftppath" ]; then - echo "FTP path for this repo ($reponame) is missing" - echo "Please contact a system administrator" - exit 1 -fi - +stagedir="$STAGING/$reponame" if [ ! -d $stagedir ]; then echo "error: staging directory missing: $stagedir" >&2 exit 1 fi +if [ -d "${stagedir}64" ]; then + echo "--------------------------------------------------" + echo "It looks like you have an old staging dir" + echo "Packages are now differentiated by the arch in the filename." + echo "Please delete '${stagedir}64'" + echo "--------------------------------------------------" + /bin/mv "${stagedir}64/add/"* "$stagedir/add/" + /bin/mv "${stagedir}64/del/"* "$stagedir/del/" +fi + +if [ -d "${stagedir}/add" ]; then + echo "--------------------------------------------------" + echo "It looks like you have an old staging dir" + echo "The 'add' and 'del' dirs are no longer used." + echo "Please delete staging/<reponame>/{add,del}" + echo " and ensure you are using the newest devtools" + echo "--------------------------------------------------" + /bin/mv "${stagedir}/add/"* "$stagedir/" +fi + # Get the package name from the filename # hackish, but should work for now getpkgname() { @@ -41,14 +50,14 @@ getpkgname() { tmp=${1##*/} tmp=${tmp%$PKGEXT} - tmp=${tmp%-$CARCH} + tmp=${tmp%-$current_arch} echo ${tmp%-*-*} } cleanup() { trap '' 0 2 # unlock - repo_unlock $reponame $_arch + repo_unlock $reponame $current_arch rm -rf "$WORKDIR" [ "$1" ] && exit $1 } @@ -66,114 +75,111 @@ die() { trap ctrl_c 2 trap cleanup 0 -repo_lock $reponame $_arch +for A in ${ARCHES[@]}; do + current_arch="$A" -/bin/mkdir -p "$WORKDIR/build" -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/ -fi + ftppath="$FTP_BASE/$reponame/os/$current_arch/" -echo "Updating DB for $reponame $_arch" - -if [ -d "${stagedir}64" ]; then - echo "--------------------------------------------------" - echo "It looks like you have an old staging dir" - echo "Packages are now differentiated by the arch in the filename." - echo "Please delete '${stagedir}64'" - echo "--------------------------------------------------" - /bin/mv "${stagedir}64/add/"* "$stagedir/add/" - /bin/mv "${stagedir}64/del/"* "$stagedir/del/" -fi + if [ ! -d "$ftppath" ]; then + echo "FTP path for this repo ($reponame) is missing" + echo " -> $ftppath" + echo "Please contact a system administrator" + exit 1 + fi -if [ -d "${stagedir}/add" ]; then - echo "--------------------------------------------------" - echo "It looks like you have an old staging dir" - echo "The 'add' and 'del' dirs are no longer used." - echo "Please delete staging/<reponame>/{add,del}" - echo " and ensure you are using the newest devtools" - echo "--------------------------------------------------" - /bin/mv "${stagedir}/add/"* "$stagedir/" -fi + svnrepo="$reponame-$current_arch" -to_add="" -if [ -d "$stagedir" ]; then - ADDPKGS="$(/bin/ls $stagedir/*-${_arch}$PKGEXT 2>/dev/null)" -fi + repo_lock $reponame $current_arch -if [ -n "$ADDPKGS" ]; then + /bin/mkdir -p "$WORKDIR/build" + cd "$WORKDIR" - echo "==> Copying DB file from '$reponame'..." >&2 + # 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/ - else - touch "build/$reponame.db.tar.$DB_COMPRESSION" fi - echo "==> Processing new/updated packages for repository '$reponame'..." >&2 + echo "Updating DB for $svnrepo" - cd "$WORKDIR" - /usr/bin/svn checkout -N $SVN_PATH checkout - cd checkout + to_add="" + if [ -d "$stagedir" ]; then + ADDPKGS="$(/bin/ls $stagedir/*-${current_arch}$PKGEXT 2>/dev/null)" + fi - for pkg in $ADDPKGS; do - _pkgfile=$(basename $pkg) - _pkgname="$(getpkgname $pkg)" + if [ -n "$ADDPKGS" ]; then - echo " Validating package arch ($_arch) $_pkgname" - if ! check_pkg_arch "$pkg" "$_arch"; then - echo " ERROR: $_pkgfile was built for the wrong architecture" + 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 - 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-$_arch$PKGEXT" ]; then - to_add="$to_add $pkg" + touch "build/$reponame.db.tar.$DB_COMPRESSION" + fi + + echo "==> Processing new/updated packages for repository '$reponame'..." >&2 + + cd "$WORKDIR" + /usr/bin/svn checkout -N $SVN_PATH checkout + cd checkout + + for pkg in $ADDPKGS; do + _pkgfile=$(basename $pkg) + _pkgname="$(getpkgname $pkg)" + + echo " Validating package arch ($current_arch) $_pkgname" + if ! check_pkg_arch "$pkg" "$current_arch"; then + echo " ERROR: $_pkgfile was built for the wrong architecture" + 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-$current_arch$PKGEXT" ]; then + to_add="$to_add $pkg" + else + echo " WARNING: $_pkgfile does not match $BUILDSCRIPT in $svnrepo" + fi else - echo " WARNING: $_pkgfile does not match $BUILDSCRIPT in $svnrepo" + echo " WARNING: Package $_pkgname not found in $svnrepo" fi - else - echo " WARNING: Package $_pkgname not found in $svnrepo" fi - fi - done + done - if [ -n "$to_add" ]; then - cd "$WORKDIR/build/" - for f in $to_add; do /bin/cp "$f" .; done + if [ -n "$to_add" ]; then + cd "$WORKDIR/build/" + for f in $to_add; do /bin/cp "$f" .; done - pkgs="" - for pkg in $to_add; do pkgs="$pkgs $(basename $pkg)"; done + pkgs="" + for pkg in $to_add; do pkgs="$pkgs $(basename $pkg)"; done - /usr/bin/repo-add -q "$reponame.db.tar.$DB_COMPRESSION" $pkgs + /usr/bin/repo-add -q "$reponame.db.tar.$DB_COMPRESSION" $pkgs + else + rm -f "build/$reponame.db.tar.$DB_COMPRESSION" + echo "Errors found when adding packages" + fi else - rm -f "build/$reponame.db.tar.$DB_COMPRESSION" - echo "Errors found when adding packages" + echo "No packages to add" fi -else - echo "No packages to add" -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 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 -else - echo "Nothing to copy, no work done" -fi + else + echo "Nothing to copy, no work done" + fi -if [ -n "$to_add" ]; then - echo "Cleaning staging dir" - /bin/rm $to_add -fi + if [ -n "$to_add" ]; then + echo "Cleaning staging dir" + /bin/rm $to_add + fi + + repo_unlock $reponame $current_arch +done cleanup # vim: set ts=4 sw=4 noet ft=sh: |