]> git.decadent.org.uk Git - dak.git/blobdiff - dak/update_db.py
Merge commit 'origin/master' into dm_upload_allowed
[dak.git] / dak / update_db.py
index cda7aeb37baec6507b4050a48abb833c856ae622..dc943503900a672920063f8fca40189d4a81d9e2 100755 (executable)
@@ -26,7 +26,7 @@
 
 ################################################################################
 
-import psycopg2, sys
+import psycopg2, sys, fcntl, os
 import apt_pkg
 import time
 from daklib import database
@@ -50,6 +50,7 @@ Updates dak's database schema to the lastest version. You should disable crontab
 
 
 ################################################################################
+
     def update_db_to_zero(self):
         # This function will attempt to update a pre-zero database schema to zero
 
@@ -114,7 +115,7 @@ Updates dak's database schema to the lastest version. You should disable crontab
             print "Please make sure you have a database backup handy. If you don't, press Ctrl-C now!"
             print ""
             print "Continuing in five seconds ..."
-            #time.sleep(5)
+            time.sleep(5)
             print ""
             print "Attempting to upgrade pre-zero database to zero"
 
@@ -133,7 +134,7 @@ Updates dak's database schema to the lastest version. You should disable crontab
             dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)])
             update_module = getattr(dakdb, "update"+str(i+1))
             update_module.do_update(self)
-            database_revision /+ 1
+            database_revision += 1
 
 ################################################################################
 
@@ -155,8 +156,17 @@ Updates dak's database schema to the lastest version. You should disable crontab
             utils.warn("dak update-db takes no arguments.")
             usage(exit_code=1)
 
+
         self.update_db()
 
+        try:
+            lock_fd = os.open(Cnf["Dinstall::LockFile"], os.O_RDWR | os.O_CREAT)
+            fcntl.lockf(lock_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
+        except IOError, e:
+            if errno.errorcode[e.errno] == 'EACCES' or errno.errorcode[e.errno] == 'EAGAIN':
+                utils.fubar("Couldn't obtain lock; assuming another 'dak process-unchecked' is already running.")
+
+
 ################################################################################
 
 if __name__ == '__main__':