extras-buildsys/server BuildMaster.py, 1.35.2.1.4.1, 1.35.2.1.4.2 DBManager.py, 1.1.2.2.4.1, 1.1.2.2.4.2 PackageJob.py, 1.31.2.10.4.4, 1.31.2.10.4.5 Repo.py, 1.16.2.3.4.2, 1.16.2.3.4.3 User.py, 1.7.6.1, 1.7.6.2

Dennis Gilmore ausil at fedoraproject.org
Thu Sep 4 02:14:52 UTC 2008


Author: ausil

Update of /cvs/fedora/extras-buildsys/server
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv4025/server

Modified Files:
      Tag: Plague-0_4_5
	BuildMaster.py DBManager.py PackageJob.py Repo.py User.py 
Log Message:
- update to 0.4.5.1  applying Michael schwendt's logging and mock patches
- using pysqlite2 on fedora and python-sqlite on RHEL
- requires mock > 0.8
- requires createrepo >= 0.4.7




Index: BuildMaster.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/BuildMaster.py,v
retrieving revision 1.35.2.1.4.1
retrieving revision 1.35.2.1.4.2
diff -u -r1.35.2.1.4.1 -r1.35.2.1.4.2
--- BuildMaster.py	31 Jan 2008 14:30:13 -0000	1.35.2.1.4.1
+++ BuildMaster.py	4 Sep 2008 02:14:20 -0000	1.35.2.1.4.2
@@ -65,10 +65,6 @@
         self._building_jobs = {}
         self._building_jobs_lock = threading.Lock()
 
-        self._dbcx = self._db_manager.dbcx()
-        self._cursor = self._dbcx.cursor()
-
-        self._requeue_interrupted_jobs()
         threading.Thread.__init__(self)
         self.setName("BuildMaster")
 
@@ -397,6 +393,12 @@
 
     def run(self):
         DebugUtils.registerThreadName(self)
+
+        self._dbcx = self._db_manager.dbcx()
+        self._cursor = self._dbcx.cursor()
+
+        self._requeue_interrupted_jobs()
+
         while self.should_stop == False:
             # Write update status for jobs to the database
             self._save_job_status()


Index: DBManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/DBManager.py,v
retrieving revision 1.1.2.2.4.1
retrieving revision 1.1.2.2.4.2
diff -u -r1.1.2.2.4.1 -r1.1.2.2.4.2
--- DBManager.py	31 Jan 2008 14:30:13 -0000	1.1.2.2.4.1
+++ DBManager.py	4 Sep 2008 02:14:20 -0000	1.1.2.2.4.2
@@ -124,11 +124,15 @@
 
     def fetchall(self, cursor):
         """ sqlite returns the items in a dict-like class already """
-        return cursor.fetchall()
+        rows = cursor.fetchall()
+        return [ResultSet(row, cursor.description) for row in rows]
 
     def fetchone(self, cursor):
         """ sqlite returns the items in a dict-like class already """
-        return cursor.fetchone()
+        row = cursor.fetchone()
+        if not row:
+            return None
+        return ResultSet(row, cursor.description)
 
     def _connect(self):
         try:
@@ -143,7 +147,7 @@
             tm = 3
 
         try:
-            dbcx = sqlite.connect(dbloc, encoding="utf-8", timeout=tm)
+            dbcx = sqlite.connect(dbloc, timeout=tm)
         except StandardError, e:
             print "Error: %s" % e
             os._exit(1)
@@ -268,7 +272,10 @@
 try:
     import sqlite
 except ImportError, e:
-    db_engines['sqlite'] = None
+    try:
+        import pysqlite2._sqlite as sqlite
+    except ImportError, e:
+        db_engines['sqlite'] = None
 
 try:
     import pgdb


Index: PackageJob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/PackageJob.py,v
retrieving revision 1.31.2.10.4.4
retrieving revision 1.31.2.10.4.5
diff -u -r1.31.2.10.4.4 -r1.31.2.10.4.5
--- PackageJob.py	31 Jan 2008 14:34:23 -0000	1.31.2.10.4.4
+++ PackageJob.py	4 Sep 2008 02:14:20 -0000	1.31.2.10.4.5
@@ -729,30 +729,9 @@
 
         self.bm.notify_job_done(self)
 
-    def _get_log_tail(self, arch):
-        """ Returns the last 30 lines of the most relevant log file """
-
-        pkg_dir = "%s-%s-%s-%s" % (self.uid, self.name, self.ver, self.release)
-        work_dir = self._server_cfg.get_str("Directories", "server_work_dir")
-        log_dir = os.path.join(work_dir, self._target_str, pkg_dir, arch)
-        final_log = None
-        build_log = "%s/%s" % (log_dir, "build.log")
-        root_log = "%s/%s" % (log_dir, "root.log")
-        job_log = "%s/%s" % (log_dir, "job.log")
-
-        # Try the most relevant log file first
-        if os.path.exists(build_log) and os.path.getsize(build_log) > 0:
-            final_log = build_log
-        elif os.path.exists(root_log) and os.path.getsize(root_log) > 0:
-            final_log = root_log
-        elif os.path.exists(job_log) and os.path.getsize(job_log) > 0:
-            final_log = job_log
-
-        if not final_log:
-            return ""
-
-        seek_pos = os.path.getsize(final_log) - 4096
-        f = open(final_log, "r", 4096);
+    def _get_log_file_tail(self, logfile):
+        seek_pos = os.path.getsize(logfile) - 4096
+        f = open(logfile, "r", 4096);
         if seek_pos > 0:
             f.seek(seek_pos)
         try:
@@ -770,9 +749,28 @@
             lines.append(line)
             if len(lines) > 30:  # only want last 30 lines
                 del lines[0]
-
         f.close()
-        return "".join(lines)
+        return lines
+
+    def _get_log_tail(self, arch):
+        """ Returns the last 30 lines of the most relevant log file(s) """
+
+        pkg_dir = "%s-%s-%s-%s" % (self.uid, self.name, self.ver, self.release)
+        work_dir = self._server_cfg.get_str("Directories", "server_work_dir")
+        log_dir = os.path.join(work_dir, self._target_str, pkg_dir, arch)
+
+        logtail = []
+        for l in ["build.log", "root.log", "job.log"]:
+            lpath = os.path.join(log_dir, l)
+            if os.path.exists(lpath) and os.path.getsize(lpath)>0:
+                lines = self._get_log_file_tail(lpath)
+                if l=="build.log" and len(lines)<10:
+                    logtail += lines
+                    logtail.append("\n\n"+">"*40+"\n\n")
+                else:
+                    logtail += lines
+                    break
+        return "".join(logtail)
 
     def email_result(self, to, resultstring, subject=None):
         """send 'resultstring' to self.username"""


Index: Repo.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Repo.py,v
retrieving revision 1.16.2.3.4.2
retrieving revision 1.16.2.3.4.3
diff -u -r1.16.2.3.4.2 -r1.16.2.3.4.3
--- Repo.py	5 Mar 2008 22:39:47 -0000	1.16.2.3.4.2
+++ Repo.py	4 Sep 2008 02:14:20 -0000	1.16.2.3.4.3
@@ -87,7 +87,7 @@
             return True
         return False
 
-    def _update_repo(self):
+    def _update_repo(self, target_string):
         """ Copy new RPMS to each repo, and update each repo at the end """
         for buildjob in self._repo_additions:
             # Ensure all the files are accessible
@@ -118,11 +118,11 @@
 
         self._repo_additions = []
 
-        (s, o) = commands.getstatusoutput('/usr/bin/createrepo -q -c %s -x "*.src.rpm" -x "*-debuginfo-*.rpm" %s' % (self._repo_cache_dir, self._repodir))
+        (s, o) = commands.getstatusoutput('/usr/bin/createrepo -d -q -c %s -x "*.src.rpm" -x "*-debuginfo-*.rpm" %s' % (self._repo_cache_dir, self._repodir))
         if s != 0:
-            print "Repo Error (%s): createrepo failed with exit status %d!  Output: '%s'" % (target_string, s, o)
+            target_str = self._target_cfg.target_string()
+            print "Repo Error (%s): createrepo failed with exit status %d!  Output: '%s'" % (target_str, s, o)
 
-        del target_string
 
     def _run_repo_script(self):
         target_str = self._target_cfg.target_string()


Index: User.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/User.py,v
retrieving revision 1.7.6.1
retrieving revision 1.7.6.2
diff -u -r1.7.6.1 -r1.7.6.2
--- User.py	31 Jan 2008 14:30:13 -0000	1.7.6.1
+++ User.py	4 Sep 2008 02:14:20 -0000	1.7.6.2
@@ -14,8 +14,12 @@
 #
 # Copyright 2005 Dan Williams <dcbw at redhat.com> and Red Hat, Inc.
 
+try:
+    import sqlite
+except ImportError, e:
+    import pysqlite2._sqlite as sqlite
 
-import sqlite
+import sys
 
 CONFIG_LOCATION = "/etc/plague/server/"
 
@@ -30,10 +34,9 @@
         self.user_admin = False
         self.server_admin = False
 
-
 def get_userdb_dbcx():
     try:
-        dbcx = sqlite.connect(CONFIG_LOCATION + "userdb", encoding="utf-8", timeout=4)
+        dbcx = sqlite.connect(CONFIG_LOCATION + "userdb", timeout=4)
         curs = dbcx.cursor()
         return (dbcx, curs)
     except sqlite.DatabaseError, e:
@@ -57,7 +60,7 @@
         try:
             curs.execute('SELECT * FROM users')
             dbcx.commit()
-        except sqlite._sqlite.DatabaseError, e:
+        except sqlite.DatabaseError, e:
             create = True
 
         if create:




More information about the fedora-extras-commits mailing list