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("",<STDIN>);~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
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("",<STDIN>);~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)
exit
fi
-
# we set $srctree, $dsttree and $pkglist
srctree=$1
dsttree=$2
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"