from common import gerrit
from common import mapping
from common.tempbuildpkg import TempPackageBuild
+from common import runner
from gbp.rpm import SpecFile
+from gbp.errors import GbpError
def end(tmpdir, return_code = 0):
"""Get return code"""
return specfile
+def export(prjdir, packagingdir, mygit, events, mygerrit):
+ """Check a git repo whether it can be executed `gbs export` correctly"""
+ mygit.checkout('FETCH_HEAD')
+ tempd = tempfile.mkdtemp(dir=packagingdir)
+ cmd = 'gbs export --packaging-dir %s -o %s' % (packagingdir, tempd)
+
+ with utils.Workdir(prjdir):
+ rcode, outs = runner.show(cmd)
+
+ shutil.rmtree(tempd)
+
+ if rcode:
+ msg = "Use 'gbs export' to generate package on this patch failed, " \
+ "please have a check.\n\n" \
+ "gbs command: %s\n" \
+ "%s" % (cmd[:cmd.rfind(' -o ')], outs)
+ mygerrit.review(events['patchset_revision'], message=msg)
+ return False
+
+ return True
+
def build_package(obs_dest_prj, specfile, prjdir, packagingdir, events,
mygerrit):
"""Build package in OBS"""
# search spec file under packaging dir
specs = utils.find_spec('%s/%s' % (prjdir, packagingdir))
+ if not export(prjdir, packagingdir, mygit, events, mygerrit):
+ return end(tmpdir) # not jenkins' error, return 0
+
rc_codes = []
for target in obstargets: