pld-ftp-admin: bin/pfa-from-incoming - detect differing version or release ...

baggins baggins at pld-linux.org
Fri Oct 18 22:10:41 CEST 2013


Author: baggins                      Date: Fri Oct 18 20:10:41 2013 GMT
Module: pld-ftp-admin                 Tag: HEAD
---- Log message:
- detect differing version or release among rpms from package

---- Files affected:
pld-ftp-admin/bin:
   pfa-from-incoming (1.30 -> 1.31) 

---- Diffs:

================================================================
Index: pld-ftp-admin/bin/pfa-from-incoming
diff -u pld-ftp-admin/bin/pfa-from-incoming:1.30 pld-ftp-admin/bin/pfa-from-incoming:1.31
--- pld-ftp-admin/bin/pfa-from-incoming:1.30	Fri Oct 11 21:40:47 2013
+++ pld-ftp-admin/bin/pfa-from-incoming	Fri Oct 18 22:10:36 2013
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
-import sys, os, stat, time
+import sys, os, stat, time, re
 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
 from config import incoming_dir, default_to, ftp_archs
 from config import value as cval
@@ -123,6 +123,42 @@
         f.write("file:noarch:%s\ninfo:noarch_arch:%s:%s\n" % (rpmfile, rpmfile, arch))
         mv(incoming_dir + arch + '/' + rpmfile, default_to + 'noarch/RPMS')
 
+def send_vr_msg(snvr, anvr, pkg, arch):
+    req_email=pkg.build[pkg.lastbid].requester_email
+    req_bid=pkg.lastbid
+    cc_list=[]
+    if 'logs_list' in cval:
+        cc_list.append(cval['logs_list'])
+    m_subject="NVR error: %s version or relese differ among subpackages" % snvr[0]
+    bids=pkg.build.keys()
+    if len(bids)>1:
+        for bid in bids:
+            newcc=pkg.build[bid].requester_email
+            if req_email!=newcc and newcc not in cc_list:
+                cc_list.append(newcc)
+
+    msg="From: %s\nTo: %s\n" % (cval['from_field'], req_email)
+    if cc_list:
+        msg=msg+"Cc: %s\n" % ", ".join(cc_list)
+    msg=msg+"""X-PLD-Builder: %s
+References: <%s at pld.src.builder>
+In-Reply-To: <%s at pld.src.builder>
+Subject: %s
+
+""" % (cval['xpldbuilder'], req_bid, req_bid, m_subject)
+
+    sm = os.popen("/usr/sbin/sendmail -t", "w")
+
+    sm.write(msg)
+
+    sm.write("Difference between %s SRPM (currently in %s) and %s RPM NVR:\n\n" %
+          (snvr[0], `ftptree`, arch)),
+    sm.write("SRPM: N:%s V:%s R:%s\n" % snvr)
+    sm.write(" RPM: N:%s V:%s R:%s\n" % anvr)
+    sm.write('\n')
+
+    sm.close()
+
 # main()
 try:
     ftpio.connect('from-incoming-pid-%s' % os.getpid())
@@ -181,6 +217,9 @@
         if not ftptree.has_key(`srcpkg`):
             continue # We require the src.rpm to be present
 
+        renvr = re.compile(r'(.*)-(.*)-(.*)\.[^.]*\.rpm')
+        srcnvr = renvr.match(srpm).groups()
+
         rpmfile_missing = [f for f in srcpkg.files['ARCH'] if not os.path.exists(incoming_dir + arch + '/'+f)]
         if len(rpmfile_missing):
             for filem in rpmfile_missing:
@@ -204,6 +243,11 @@
         f = open(default_to + 'SRPMS/.metadata/' + srpm + '.info', 'a')
         for rpmfile in srcpkg.files['ARCH']:
             moved_anything = True
+
+            archnvr = renvr.match(rpmfile).groups()
+            if srcnvr[1] != archnvr[1] or srcnvr[2] != archnvr[2]:
+                send_vr_msg(srcnvr, archnvr, dstpkg, arch)
+
             if rpmfile[-11:] == '.noarch.rpm' and config.separate_noarch:
                 move_noarch(f, arch, rpmfile, dstpkg)
             else:
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/pld-ftp-admin/bin/pfa-from-incoming?r1=1.30&r2=1.31



More information about the pld-cvs-commit mailing list