From ac39a9702ef384bc15864913c4263a86063c4f0d Mon Sep 17 00:00:00 2001 From: Mariusz Mazur Date: Sat, 9 Oct 2004 18:10:16 +0000 Subject: [PATCH] - full noarch support (with error checking and reporting) Changed files: bin/from-incoming.sh -> 1.15 bin/functions -> 1.8 --- bin/from-incoming.sh | 56 ++++++++++++++++++++++++++++++++++++++++---- bin/functions | 32 +++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/bin/from-incoming.sh b/bin/from-incoming.sh index 7299293..ec004d0 100755 --- a/bin/from-incoming.sh +++ b/bin/from-incoming.sh @@ -2,6 +2,48 @@ . ~/pld-ftp-admin/scripts/functions +move_noarch() +{ + rpmname="$1" + srcname="$2" + f_arch="$3" + + # TODO: check if noarch differ and if so - mail the request sender or sth + alreadypresent=`grep "^file:noarch:$rpmname$" $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info` + if [ -n "$alreadypresent" ]; then + rpm -qlp $rpmname > ~/tmp/files.new + rpm -qRp $rpmname|sort|uniq > ~/tmp/reqs.new + + noarchs_differ="no" + diff_file=~/tmp/noarchs_difference + echo -ne "" > $diff_file + if ! diff ~/tmp/{noarch-cache/$rpmname.filelist,files.new} >/dev/null; then + noarchs_differ="yes" + echo "_FILES_" >> $diff_file + diff -u ~/tmp/{noarch-cache/$rpmname.filelist,files.new}>>$diff_file + fi + + if ! diff ~/tmp/{noarch-cache/$rpmname.reqlist,reqs.new} >/dev/null; then + noarchs_differ="yes" + echo "_REQS_" >> $diff_file + diff -u ~/tmp/{noarch-cache/$rpmname.reqlist,reqs.new} >> $diff_file + fi + + if [ "$noarchs_differ" == "yes" ]; then + send_noarch_msg $srcname $rpmname $diff_file + fi + + rm $rpmname + else + rpm -qlp $rpmname > ~/tmp/noarch-cache/$rpmname.filelist + rpm -qRp $rpmname|sort|uniq > ~/tmp/noarch-cache/$rpmname.reqlist + chmod a+r $rpmname + mv $rpmname $FTP_DIR/$DEFAULT_TO/noarch/RPMS/ + echo -e "file:noarch:$rpmname\ninfo:noarch_arch:$rpmname:$f_arch" >> \ + $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info + fi +} + move_arch() { f_arch="$1" # arch @@ -31,10 +73,16 @@ move_arch() if [ "$remove" == "yes" ]; then rm $x else - # Move the files - chmod a+r $x - mv $x $FTP_DIR/$DEFAULT_TO/$f_arch/RPMS/ - echo "file:$f_arch:$x" >> $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info + if [ -n `echo $x|grep 'noarch.rpm$'` ]; then + # Huston, we've got a noarch + move_noarch $x $srcname $f_arch + else + # Move the files + chmod a+r $x + mv $x $FTP_DIR/$DEFAULT_TO/$f_arch/RPMS/ + echo "file:$f_arch:$x" >> \ + $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info + fi fi done diff --git a/bin/functions b/bin/functions index 02175b8..5a01f37 100644 --- a/bin/functions +++ b/bin/functions @@ -35,6 +35,38 @@ if [ "$DEBUG" == "yes" ]; then } fi +# Send an email to request senders about broken noarchs +# Args: 1 - src.rpm +# 2 - rpm name +# 3 - file with message's body +send_noarch_msg() +{ + srcname="$1" + rpmname="$2" + m_body="$3" + + req_email="`cat $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info| \ + grep '^info:requester_email:'|cut -d: -f 3|head -1`" + cur_arch="`cat $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info| \ + grep ^info:noarch_arch:$rpmname:|cut -d: -f 4`" + m_subject="Noarch error: $rpmname files differ between builders" + + cc_list="`cat $FTP_DIR/$DEFAULT_TO/SRPMS/.metadata/$srcname.info| \ + grep '^info:requester_email:'|cut -d: -f 3|grep -v ^$req_email$| \ + sort|uniq|xargs echo|sed -e 's/ /,/g'`" + + if [ -n "$cc_list" ]; then + cc_cmd="-c $cc_list" + else + cc_cmd="" + fi + + cat "$m_body"| sed \ + -e "s,^_FILES_,Difference between $cur_arch (currently in $DEFAULT_TO) and $f_arch FILES," \ + -e "s,^_REQS_,Difference between $cur_arch (currently in $DEFAULT_TO) and $f_arch REQS," | \ + grep -v '^---\|^+++'| mail -s "$m_subject" $cc_cmd "$req_email" +} + errnum="0" pkglist="" # Fill $pkglist -- 2.44.0