Author: dcbw
Update of /cvs/fedora/extras-buildsys/server In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21008/server
Modified Files: Config.py PackageJob.py Repo.py Log Message: Make the test a bit more informative
Index: Config.py =================================================================== RCS file: /cvs/fedora/extras-buildsys/server/Config.py,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Config.py 26 Nov 2005 06:10:22 -0000 1.11 +++ Config.py 1 Dec 2005 03:17:25 -0000 1.12 @@ -95,6 +95,8 @@ def save_default_config(self, filename=None): self.add_section("General") self.set_option("General", "hostname", "localhost") + self.set_option("General", "traceback_server", "no") + self.set_option("General", "depsolve_jobs", "yes")
self.add_section("Directories") self.set_option("Directories", "server_work_dir", "/rpmbuild",)
Index: PackageJob.py =================================================================== RCS file: /cvs/fedora/extras-buildsys/server/PackageJob.py,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- PackageJob.py 29 Nov 2005 06:41:51 -0000 1.39 +++ PackageJob.py 1 Dec 2005 03:17:26 -0000 1.40 @@ -154,8 +154,11 @@ self._result_dir = None self._srpm_path = None self._srpm_http_path = None + self._depsolve_dir = None self._last_depsolve_error = None + self._depsolve_first_try = False + self.repofiles = {} self.archjobs = {} self._archjobs_lock = threading.Lock() @@ -404,10 +407,14 @@ """ % (self._source, pkg_arches, allowed_arches) raise PrepError(msg)
- self._set_cur_stage('depsolve_wait') - log("%s (%s): Requesting depsolve..." % (self.uid, self.package)) - self._repo.request_depsolve(self, first_try=True) - return True # sleep until the Repo wakes us up for depsolve + if self._server_cfg.get_bool("General", "depsolve_jobs"): + self._set_cur_stage('depsolve_wait') + log("%s (%s): Requesting depsolve..." % (self.uid, self.package)) + self._repo.request_depsolve(self, first_try=True) + return True # sleep until the Repo wakes us up for depsolve + else: + # Don't depsolve, just queue archjobs and wait + return self._prepare_and_wait()
def _write_yum_conf(self, arch): # Figure out which mock config file it is, and write out it's yum.conf @@ -492,7 +499,8 @@ del base, srpm return success
- def start_depsolve(self): + def start_depsolve(self, first_try=False): + self._depsolve_first_try = first_try self._set_cur_stage('depsolve') self.wake()
@@ -530,9 +538,11 @@
log("%s (%s): Starting depsolve for arches: %s." % (self.uid, self.package, archlist))
+ failed_arch = None for arch in archlist: if self._arch_deps_solved(arch) == False: unsolved_deps = True + failed_arch = arch break
self._archjobs_lock.release() @@ -540,6 +550,15 @@ self._repo.notify_depsolve_done(self)
if unsolved_deps == True: + # Notify the queuer of the job that it's failed the first depsolve + if self._depsolve_first_try: + subject = 'Dependency Problem: %d - %s on %s' % (self.uid, self.name, self._target_str) + sender = self._server_cfg.get_str("Email", "email_from") + msg = """This job failed its initial dependency test. The build server will +periodically try to build the job for the next 8 hours. +Error on %s: %s""" % (failed_arch, self._last_depsolve_error) + EmailUtils.email_result(sender, self.username, msg, subject) + # Go to sleep until the repo changes self._set_cur_stage('depsolve_wait') self._repo.request_depsolve(self, first_try=False) @@ -552,7 +571,10 @@ shutil.rmtree(self._depsolve_dir, ignore_errors=True) self._depsolve_dir = None
- # Queue up the archjobs + return self._prepare_and_wait() + + def _prepare_and_wait(self): + # Make some directories we need work_dir = self._server_cfg.get_str("Directories", "server_work_dir") self._result_dir = self._make_stage_dir(work_dir) for arch in self.archjobs.keys(): @@ -570,6 +592,7 @@ if self.use_cvs == True: shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
+ # Queue up archjobs self._set_cur_stage('waiting') self._request_arch_jobs() return False
Index: Repo.py =================================================================== RCS file: /cvs/fedora/extras-buildsys/server/Repo.py,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- Repo.py 29 Nov 2005 06:41:51 -0000 1.20 +++ Repo.py 1 Dec 2005 03:17:26 -0000 1.21 @@ -133,7 +133,7 @@ archjob.repo_unlocked_callback() self._repo_unlock_lock.release()
- def _start_depsolves_for_queue(self, queue, max_jobs): + def _start_depsolves_for_queue(self, queue, max_jobs, first_try=False): num = 0 for job in queue: if queue[job]: @@ -146,7 +146,7 @@ break if not queue[job]: queue[job] = True - job.start_depsolve() + job.start_depsolve(first_try) available = available - 1
def _start_waiting_depsolves(self, repo_changed=False): @@ -161,11 +161,11 @@ max_again_depsolves = self.MAX_DEPSOLVE_JOBS / 2 max_immediate_depsolves = self.MAX_DEPSOLVE_JOBS / 2
- self._start_depsolves_for_queue(self._depsolve_immediate_queue, max_immediate_depsolves) + self._start_depsolves_for_queue(self._depsolve_immediate_queue, max_immediate_depsolves, first_try=True)
# Only fire off non-first-try depsolves if the repo has changed if repo_changed: - self._start_depsolves_for_queue(self._depsolve_again_queue, max_again_depsolves) + self._start_depsolves_for_queue(self._depsolve_again_queue, max_again_depsolves, first_try=False)
self._depsolve_again_lock.release() self._depsolve_immediate_lock.release()
scm-commits@lists.fedoraproject.org