sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
from config import incoming_dir, default_to, ftp_archs
import config
-from common import noarchcachedir, tmpdir
+from common import noarchcachedir, tmpdir, fileexists
from baseftptree import BaseFtpTree, BasePkg
+cval=config.value
+import ftpio
-def log(msg):
- print msg
+try:
+ ftpio.connect('from-incoming')
+except:
+ sys.exit(0)
def rm(file):
- #os.remove()
- print 'rm: '+file
+ os.remove(file)
+ #print 'rm: '+file
def mv(src, dst):
- #os.rename()
- print "mv: %s %s" % (src, dst+'/'+src.split('/')[-1])
+ os.rename(src, dst+'/'+src.split('/')[-1])
+ #print "mv: %s %s" % (src, dst+'/'+src.split('/')[-1])
def findfiles(dir):
def filterinfos(x):
else:
return content[:-4]
-ftptree=BaseFtpTree(config.value['default_to'])
+ftptree=BaseFtpTree(cval['default_to'])
+
+if not ftpio.lock(cval['default_to']):
+ sys.exit(0)
for uploadinfo in findfiles(incoming_dir+'SRPMS'):
content=getcontent(incoming_dir+'SRPMS/'+uploadinfo)
srpm=pkg.files['SRPMS'][0]
if ftptree.has_key(`pkg`):
- log("%s already present in %s; removing newer files" %
+ ftpio.log("%s already present in %s; removing newer files" %
(srpm, ftptree))
rm(incoming_dir+'SRPMS/'+srpm)
f=open(default_to+'SRPMS/.metadata/'+srpm+'.info', 'a')
rm(incoming_dir+'SRPMS/'+uploadinfo)
-def send_noarch_msg(files_differ, reqs_differ):
- pass
+def send_noarch_msg(files_differ, reqs_differ, pkg, rpm, 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="Noarch error: %s files differ among builders" % rpm
+ 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@pld.src.builder>
+In-Reply-To: <%s@pld.src.builder>
+Subject: %s
+
+""" % (cval['xpldbuilder'], req_bid, req_bid, m_subject)
+
+ sm = os.popen("/usr/sbin/sendmail -t", "w")
+
+ sm.write(msg)
+
+ if files_differ:
+ f=open("%s/files.diff" % tmpdir, 'r')
+ sm.write("Difference between %s (currently in %s) and %s FILES\n" %
+ (pkg.noarch_arch[rpm], `ftptree`, arch)),
+ for line in f.readlines(True)[2:]:
+ sm.write(line)
+ f.close()
+
+ sm.write('\n')
+
+ if reqs_differ:
+ f=open("%s/reqs.diff" % tmpdir, 'r')
+ sm.write("Difference between %s (currently in %s) and %s REQS\n" %
+ (pkg.noarch_arch[rpm], `ftptree`, arch)),
+ for line in f.readlines(True)[2:]:
+ sm.write(line)
+ f.close()
+
+ sm.close()
+
+
def move_noarch(f, arch, rpm, dstpkg):
if dstpkg.noarch_arch.has_key(rpm):
reqs_differ=True
if files_differ or reqs_differ:
- # TODO: sending this thing will be a little more problematic
- # than I originally thought
- #send_noarch_msg(files_differ, reqs_differ)
- print 'files or reqs differ'
+ send_noarch_msg(files_differ, reqs_differ, dstpkg, rpm, arch)
rm(incoming_dir+arch+'/'+rpm)
else:
dstpkg=BasePkg(`srcpkg`, ftptree)
if dstpkg.files.has_key(arch):
- log("files from %s for arch %s already present in %s; removing newer files" % (`srcpkg`, arch, ftptree))
+ ftpio.log("files from %s for arch %s already present in %s; removing newer files" % (`srcpkg`, arch, ftptree))
for rpm in srcpkg.files['ARCH']:
rm(incoming_dir+arch+'/'+rpm)
rm(incoming_dir+arch+'/'+uploadinfo)
f=open(default_to+'SRPMS/.metadata/'+srpm+'.info', 'a')
for rpm in srcpkg.files['ARCH']:
- if rpm[-11:]=='.noarch.rpm':
+ if rpm[-11:]=='.noarch.rpm' and config.separate_noarch:
move_noarch(f, arch, rpm, dstpkg)
else:
f.write("file:%s:%s\n" % (arch, rpm))
rm(incoming_dir+arch+'/'+uploadinfo)
+ftpio.unlock(cval['default_to'])
+