[Uludag-commits] r15315 - trunk/staj-projeleri/buildfarm

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
5 Eyl 2007 Çar 14:47:57 EEST


Author: ozan.caglayan
Date: Wed Sep  5 14:47:57 2007
New Revision: 15315

Modified:
   trunk/staj-projeleri/buildfarm/server.py
Log:
buildfarm can now be run in daemon mode. logs every activity into /var/log/buildfarmd.log

Modified: trunk/staj-projeleri/buildfarm/server.py
=================================================================
--- trunk/staj-projeleri/buildfarm/server.py	(original)
+++ trunk/staj-projeleri/buildfarm/server.py	Wed Sep  5 14:47:57 2007
@@ -42,6 +42,7 @@
     
     # "SocketServer.py" cleans the zombies just after a new connection request
     # This function overrides the SIGCHLD handler for immediate clean-up.
+    # FIXME: Breaks repomanager.py/updateRepositories() -> Errno 10
     def overrideHandler(self):
         def SIGCHLDHandler(signum,frame):
             # dummy wrapper for calling collect_children()
@@ -122,31 +123,41 @@
 
 if __name__ == "__main__":
     
-    ## Add stream redirections
-    #try:
-    #    pid = os.fork()
-    #    if pid > 0:
-    #        # Exit first parent
-    #        sys.exit(0)
-    #except OSError, e:
-    #    print >> sys.stderr, "fork() failed: %d (%s)" % (e.errno, e.strerror)
-    #    sys.exit(1)
-    #    
-    ## Decouple from parent environment
-    ##os.chdir("/")
-    #os.setsid()
-    #os.umask(0)
-    #
-    ## Do second fork
-    #try:
-    #    pid = os.fork()
-    #    if pid > 0:
-    #        # Exit from second parent
-    #        sys.exit(0)
-    #except OSError, e:
-    #    print >> sys.stderr, "fork() failed: %d (%s)" % (e.errno, e.strerror)
-    #    sys.exit(1)
-    #    
-    ## Start the daemon main loop
+    try:
+        pid = os.fork()
+        if pid > 0:
+            # Exit first parent
+            sys.exit(0)
+    except OSError, e:
+        print >> sys.stderr, "fork() failed: %d (%s)" % (e.errno, e.strerror)
+        sys.exit(1)
+        
+    # Decouple from parent environment
+    #os.chdir("/")
+    os.setsid()
+    os.umask(0)
+
+    # Do second fork
+    try:
+        pid = os.fork()
+        if pid > 0:
+            # Exit from second parent
+            sys.exit(0)
+    except OSError, e:
+        print >> sys.stderr, "fork() failed: %d (%s)" % (e.errno, e.strerror)
+        sys.exit(1)
+    
+    # Close current standard stream fd's
+    os.close(sys.stdin.fileno())
+    os.close(sys.stdout.fileno())
+    os.close(sys.stderr.fileno())
+    
+    # 384 is the bitwise or of S_IRUSR and S_IWUSR 
+    out = os.open(config.daemonLog, os.O_WRONLY|os.O_CREAT|os.O_APPEND, 384)
+    
+    # Redirect stdout and stderr to daemon log file
+    os.dup2(out, sys.stdout.fileno())
+    os.dup2(out, sys.stderr.fileno())
     
+    ## Start the daemon main loop
     runServer()


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi