extras-buildsys/server Config.py, 1.11, 1.12 PackageJob.py, 1.39, 1.40 Repo.py, 1.20, 1.21

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Thu Dec 1 03:17:28 UTC 2005


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()




More information about the scm-commits mailing list