Give warning about multiply spec files
authorLin Yang <lin.a.yang@intel.com>
Fri, 7 Dec 2012 10:08:42 +0000 (18:08 +0800)
committerLin Yang <lin.a.yang@intel.com>
Thu, 28 Feb 2013 07:23:24 +0000 (15:23 +0800)
Change-Id: Idab6624c1e9e7ba7a926774229f585076526c1b6
Signed-off-by: Lin Yang <lin.a.yang@intel.com>
job_submitobs.py

index a2e1432..75d1dfd 100755 (executable)
@@ -151,6 +151,12 @@ def update_gerritinfo(obspkg, gitprj, commitid):
         for line in lines:
             log.write(line)
 
+def feedback(msg, tag, tagger, mygerrit):
+    """ post message back to gerrit and send mail to tag owner """
+    mygerrit.review(commit = GERRIT_PATCHSET_REVISION, message = msg)
+    msg = 'Hi, %s,\n\n' % tagger['author'] + msg + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
+    prepare_mail("%s.mail.env" % random.random(), TITLE_FAILED % (tag, GERRIT_PROJECT), msg, NOREPLY_EMAIL_SENDER, tagger['email'])
+
 def end(result = 'success'):
     print 'execute result: %s' % result
     db = mysql.Database(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DB_NAME)
@@ -257,9 +263,7 @@ def check_changes(obspkg, name, mygerrit, tag, tagger):
 
     print 'changes file status:', changelog, st, msg
     if msg:
-        mygerrit.review(commit = GERRIT_PATCHSET_REVISION, message = msg)
-        msg = 'Hi, %s,\n\n' % tagger['author'] + msg + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
-        prepare_mail("%s.mail.env" % random.random(), title, msg, NOREPLY_EMAIL_SENDER, tagger['email'])
+        feedback(msg, tag, tagger, mygerrit)
 
 def main():
     # global variable
@@ -354,7 +358,7 @@ def main():
         if tagger.has_key('author') and tagger.has_key('email'):
             tagcheckmsg = 'Hi, %s,\n\n' % tagger['author'] + tagcheck['message'] + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
             prepare_mail("%s.mail.env" % random.random(), tagcheck['title'], tagcheckmsg, NOREPLY_EMAIL_SENDER, tagger['email'])
-        end('failure')
+        end('success')
 
     packagingdir = utils.parse_link('%s/%s' % (prjdir, 'packaging'))
     print('packaging dir is %s/%s' % (prjdir, packagingdir))
@@ -384,10 +388,19 @@ def main():
             specfile = utils.find_spec('%s/%s' % (prjdir, packagingdir))
             if not specfile:
                 specfile = '%s/%s/%s.spec' % (prjdir, packagingdir, prj)
+                if not os.path.isfile(specfile):
+                    msg = "The tag %s pushed, but packaging directory contains multiply spec files, backend service can not decide which spec file to use. Please use OBS_PACKAGE parameter in scm/git-obs-mapping project to specify the target spec file or contact system administrator for more details." % tag
+                    feedback(msg, tag, tagger, mygerrit)
+                    end('failure')
+
         print('specfile %s' % specfile)
 
+        # check whether spec file exists
         if not os.path.isfile(specfile):
-            continue
+            msg = "The tag %s pushed, but backend service can not find %s under packaging directory, which maybe caused by OBS_PACKAGE parameter in scm/git-obs-mapping project. Please correct it or contact system administrator for more details." % (tag, os.path.basename(specfile))
+            feedback(msg, tag, tagger, mygerrit)
+            end('failure')
+
         try:
             # use gbp to parse specfile
             spec = gbp.rpm.parse_spec(specfile)
@@ -397,6 +410,8 @@ def main():
                 runner.show('gbs export --spec=%s -o %s' % (specfile, outdir))
         except Exception, exc:
             print('gbp parse spec failed. %s' % exc)
+            msg = "The tag %s pushed, but backend service parsed %s failed. Please make sure (gbs export) can work in this project." % (tag, os.path.basename(specfile))
+            feedback(msg, tag, tagger, mygerrit)
             end('failure')
 
         tarballdir = os.path.join(outdir, os.listdir(outdir)[0])