From cebb3b0400e19d509c5b1a7f5c303584fcb9f4f7 Mon Sep 17 00:00:00 2001 From: Mariusz Mazur Date: Thu, 30 Sep 2004 17:17:35 +0000 Subject: [PATCH] - finished Changed files: bin/check-move.sh -> 1.2 bin/functions -> 1.6 bin/move.sh -> 1.11 --- bin/check-move.sh | 57 ++++--------------------------------------- bin/functions | 61 +++++++++++++++++++++++++++++++++++++++++++++++ bin/move.sh | 15 +++++++++++- 3 files changed, 79 insertions(+), 54 deletions(-) diff --git a/bin/check-move.sh b/bin/check-move.sh index 73a765c..abcda94 100755 --- a/bin/check-move.sh +++ b/bin/check-move.sh @@ -30,61 +30,12 @@ if [ "$errnum" != "0" ]; then exit fi -cd ~/tmp -rm -f queue.txt -wget -nv "http://ep09.pld-linux.org/~builderth/queue.txt" -cat queue.txt|grep '^group:\|builders:'| \ - sed -e 's,^[ ]*,,' -e 's,^group.*id=\(.*\) pri=.*$,\1:,' |\ - perl -e '$_=join("",);~s/\nbuilders://g;print;'>q.txt +check_buildids "$srctree" +check_built_archs -cd "$FTP_DIR/$srctree/SRPMS/.metadata/" -waserror=0 -for pkg in $pkglist; do - for buildid in `grep ^info:buildid: $pkg.src.rpm.info|cut -d: -f 3`; do - if [ -n "`grep ^$buildid: ~/tmp/q.txt|grep '?'`" ]; then - waserror=$(($waserror+1)) - echo "Building of package $pkg (buildid $buildid) not finished" - fi - done -done - -cd "$FTP_DIR/$dsttree/SRPMS/.metadata/" -for pkg in $pkglist; do - olderpkgs=`find_other_pkgs "$dsttree" "$pkg"` - if [ -z "$olderpkgs" ]; then - continue - fi - # Archs that are already provided by the package that's in dest tree - availablearchs="" - for oldpkg in $olderpkgs; do - tmparchs="`cat $oldpkg.src.rpm.info|grep ^file:|cut -d: -f 2|sort|uniq`" - availablearchs="$tmparchs $availablearchs" - done - availablearchs="`echo \"$availablearchs\"|sort|uniq`" - grepstring=`echo $availablearchs| \ - sed -e 's,^,^,' -e 's,$,$,' -e 's, ,$\\\|^,g'` - newarchs="`cat $FTP_DIR/$srctree/SRPMS/.metadata/$pkg.src.rpm.info| \ - grep ^file:|cut -d: -f 2|sort|uniq`" - # Number of archs already provided by the package that's in dest tree - availablearchsnum="`echo \"$availablearchs\"|wc -l`" - # Number of archs supported by dst pkg that are supported by src pkg - diffnum="`echo \"$newarchs\"|grep $grepstring|wc -l`" - - if [ $availablearchsnum != $diffnum ]; then - waserror=$(($waserror+1)) - echo "$availablearchs">~/tmp/a.list - echo "$newarchs" > ~/tmp/n.list - missingarchs=`diff ~/tmp/{a,n}.list |grep '^<'|sed -e 's,^..,,'` - echo "Moving package $pkg would mean removal of archs: $missingarchs" - fi - -done - - - -if [ "$waserror" != "0" ]; then - echo "$waserror error(s) encountered... move will fail" +if [ "$errnum" != "0" ]; then + echo "$errnum error(s) encountered... move will fail" exit fi diff --git a/bin/functions b/bin/functions index f6153e0..28a95ad 100644 --- a/bin/functions +++ b/bin/functions @@ -54,6 +54,67 @@ init_pkglist() done } +# Check if all builders said they're finished with the package +# Args: 1 - ftp tree +# pkglist +check_buildids() +{ + cd ~/tmp + rm -f queue.txt + wget -nv "http://ep09.pld-linux.org/~builderth/queue.txt" + echo "------------------------------------------" + cat queue.txt|grep '^group:\|builders:'| \ + sed -e 's,^[ ]*,,' -e 's,^group.*id=\(.*\) pri=.*$,\1:,' |\ + perl -e '$_=join("",);~s/\nbuilders://g;print;'>q.txt + + cd "$FTP_DIR/$1/SRPMS/.metadata/" + for pkg in $pkglist; do + for buildid in `grep ^info:buildid: $pkg.src.rpm.info|cut -d: -f 3`; do + if [ -n "`grep ^$buildid: ~/tmp/q.txt|grep '?'`" ]; then + errnum=$(($errnum+1)) + echo "Building of package $pkg (buildid $buildid) not finished" + fi + done + done +} + +# Check if we won't remove some arch when moving +# Args: pkglist, srctree, dsttree +check_built_archs() +{ + cd "$FTP_DIR/$dsttree/SRPMS/.metadata/" + for pkg in $pkglist; do + olderpkgs=`find_other_pkgs "$dsttree" "$pkg"` + if [ -z "$olderpkgs" ]; then + continue + fi + # Archs that are already provided by the package that's in dest tree + availablearchs="" + for oldpkg in $olderpkgs; do + tmparchs="`cat $oldpkg.src.rpm.info|grep ^file:| \ + cut -d: -f 2|sort|uniq`" + availablearchs="$tmparchs $availablearchs" + done + availablearchs="`echo \"$availablearchs\"|sort|uniq`" + grepstring=`echo $availablearchs| \ + sed -e 's,^,^,' -e 's,$,$,' -e 's, ,$\\\|^,g'` + newarchs="`cat $FTP_DIR/$srctree/SRPMS/.metadata/$pkg.src.rpm.info| \ + grep ^file:|cut -d: -f 2|sort|uniq`" + # Number of archs already provided by the package that's in dest tree + availablearchsnum="`echo \"$availablearchs\"|wc -l`" + # Number of archs supported by dst pkg that are supported by src pkg + diffnum="`echo \"$newarchs\"|grep $grepstring|wc -l`" + + if [ $availablearchsnum != $diffnum ]; then + errnum=$(($errnum+1)) + echo "$availablearchs">~/tmp/a.list + echo "$newarchs" > ~/tmp/n.list + missingarchs=`diff ~/tmp/{a,n}.list |grep '^<'|sed -e 's,^..,,'` + echo "Moving package $pkg would remove archs: $missingarchs" + fi + done +} + # Return a list of packages that differ only by version than the one given # Args: $1 - the package we're intersted in (in N-V-R format) diff --git a/bin/move.sh b/bin/move.sh index 089e6a6..cfe81d7 100755 --- a/bin/move.sh +++ b/bin/move.sh @@ -18,7 +18,6 @@ if [ ! -d "$FTP_DIR/$2" ]; then exit fi - # we set $srctree, $dsttree and $pkglist srctree=$1 dsttree=$2 @@ -31,6 +30,20 @@ if [ "$errnum" != "0" ]; then exit fi +check_buildids "$srctree" + +if [ "$errnum" != "0" ]; then + echo "$errnum error(s) encountered... aborting" + exit +fi + +check_built_archs + +if [ "$errnum" != "0" ]; then + echo "$errnum error(s) encountered... aborting" + exit +fi + # Remove packages older than the ones we're moving in $srctree tree olderpkgs=`find_older_pkgs "$srctree" "$pkglist"` remove_pkgs "$srctree" "$olderpkgs" -- 2.44.0