extras-buildsys/server ArchJob.py, 1.11, 1.12 PackageJob.py, 1.22, 1.23
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Mon Aug 15 16:00:10 UTC 2005
Author: dcbw
Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22220/server
Modified Files:
ArchJob.py PackageJob.py
Log Message:
2005-08-15 Dan Williams <dcbw at redhat.com>
* server/ArchJob.py
server/PackageJob.py
- Let "scratch" target jobs continue building even if one or more arches
has failed
Index: ArchJob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/ArchJob.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ArchJob.py 15 Aug 2005 03:18:20 -0000 1.11
+++ ArchJob.py 15 Aug 2005 16:00:08 -0000 1.12
@@ -37,6 +37,7 @@
self.jobid = jobid
self.status = 'running'
self.builder_status = ''
+ self._failure_noticed = False
self.target = target
self.arch = arch
self._builder_gone = False
@@ -52,6 +53,12 @@
self._certs['ca_cert'] = cfg.get_str("SSL", "ca_cert")
self._certs['peer_ca_cert'] = cfg.get_str("SSL", "ca_cert")
+ def failure_noticed(self):
+ return self._failure_noticed
+
+ def set_failure_noticed(self):
+ self._failure_noticed = True
+
def _builder_finished(self):
if self.builder_status == 'done' or self.builder_status == 'killed' or self.builder_status == 'failed' or self.builder_status == 'orphaned':
return True
Index: PackageJob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/PackageJob.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- PackageJob.py 15 Aug 2005 03:18:20 -0000 1.22
+++ PackageJob.py 15 Aug 2005 16:00:08 -0000 1.23
@@ -509,30 +509,47 @@
logtail = self._get_log_tail(e.arch)
msg = "%s\n-------------------------------------------------\n\n%s\n" % (msg, logtail)
self.email_result(self.username, resultstring=msg, subject=subj)
- # Kill remaining jobs on other arches
- self._kill_all_archjobs()
- self._stage_failed(e.msg)
+
+ # Only non-scratch targets kill remaining jobs and file the entire
+ # build when one archjob fails
+ if self._target_cfg.get_bool("General", "scratch") == False:
+ # Kill remaining jobs on other arches
+ self._kill_all_archjobs()
+ self._stage_failed(e.msg)
def _stage_building(self):
# Count failed and completed jobs
completed_jobs = 0
+ failed_jobs = 0
self._archjobs_lock.acquire()
for job in self.archjobs.values():
if not job:
continue
if job.get_status() is 'done':
+ completed_jobs = completed_jobs + 1
+
if job.builder_failed():
- msg = "Job failed on arch %s\n" % (job.arch)
- self._archjobs_lock.release()
- raise BuildError(msg, job.arch)
- else:
- completed_jobs = completed_jobs + 1
+ failed_jobs = failed_jobs + 1
+
+ # Normal jobs will just stop when a single archjob fails, but
+ # scratch targets don't kill the build when one fails. However,
+ # even for scratch targets, we still want to notify the user if
+ # a particular arch fails.
+ if not job.failure_noticed():
+ job.set_failure_noticed()
+ msg = "Job failed on arch %s\n" % (job.arch)
+ self._archjobs_lock.release()
+ raise BuildError(msg, job.arch)
+
self._archjobs_lock.release()
if completed_jobs == len(self.archjobs):
# Scratch targets don't contribute packages to the repo
if self._target_cfg.get_bool("General", "scratch") == True:
- self._set_cur_stage('repodone')
+ if failed_jobs > 0:
+ self._stage_failed("Job failed on one or more architectures.")
+ else:
+ self._set_cur_stage('repodone')
else:
self._set_cur_stage('add_to_repo')
return False # Don't want to wait
More information about the fedora-extras-commits
mailing list