gnome-shell r31 - trunk/scripts



Author: kamstrup
Date: Tue Nov  4 22:40:52 2008
New Revision: 31
URL: http://svn.gnome.org/viewvc/gnome-shell?rev=31&view=rev

Log:
Autodetect where the 'pidof' command lives and enable optional verbose logging inside start-replace

scripts/start-replace: Detect if 'pidof' lives in /sbin, /bin, or /usr/bin. Add conditional verbose logging if -v is passed on the command line
scripts/launcher.py: Add method is_verbose() to Launcher class


Modified:
   trunk/scripts/launcher.py
   trunk/scripts/start-replace

Modified: trunk/scripts/launcher.py
==============================================================================
--- trunk/scripts/launcher.py	(original)
+++ trunk/scripts/launcher.py	Tue Nov  4 22:40:52 2008
@@ -78,7 +78,10 @@
         plugin = os.path.join(self.plugin_dir, "libgnome-shell.la")
         args.extend(['metacity', '--mutter-plugins=' + plugin, '--replace'])
         return subprocess.Popen(args, env=env)
-            
+    
+    def is_verbose (self):
+        """Returns whether the Launcher was started in verbose mode"""
+        return self.options.verbose        
         
 
         

Modified: trunk/scripts/start-replace
==============================================================================
--- trunk/scripts/start-replace	(original)
+++ trunk/scripts/start-replace	Tue Nov  4 22:40:52 2008
@@ -8,29 +8,54 @@
 
 launcher = Launcher()
 
+def find_cmd (cmd_list):
+    """
+    Takes a list of command candidates and returns the first one that exists.
+    Raises a system exit if none of the commands exist.
+    """
+    for cmd in cmd_list:
+        if os.path.exists(cmd):
+            return cmd
+    
+    raise SystemExit("None of the commands %s exist" % cmd_list)
+    
 try:
     # Kill gnome-panel in a way that it won't autorespawn
-    pidof = subprocess.Popen(["/sbin/pidof", "gnome-panel"], stdout=subprocess.PIPE)
+    pidof_cmd = find_cmd(["/sbin/pidof", "/bin/pidof", "/usr/bin/pidof"])
+    
+    pidof = subprocess.Popen([pidof_cmd, "gnome-panel"], stdout=subprocess.PIPE)
     pids = pidof.communicate()[0].split()
     pidof.wait()
     devnull = open("/dev/null", "w")
     for pid in pids:
+        if launcher.is_verbose():
+            print "Terminating panel process %s" % pid
         subprocess.call(["gdb", "-batch-silent",
                          "-ex", "call panel_session_do_not_restart()",
                          "-ex", "call exit(0)",
                          "-p", pid], stdout=devnull, stderr=devnull)
     devnull.close()
-
+    
+    if launcher.is_verbose():
+        print "Starting shell"
     shell = launcher.start_shell()
     
     # Wait for shell to exit
     try:
+        if launcher.is_verbose():
+            print "Waiting for shell to exit"
         shell.wait()
+        if launcher.is_verbose():
+            print "Shell is dead"
     except KeyboardInterrupt, e:
         os.kill(shell.pid, signal.SIGKILL)
         shell.wait()
+        if launcher.is_verbose():
+            print "Shell killed"
 finally:
     # Restart gnome-panel and window manager
-
+    if launcher.is_verbose():
+        print "Restarting Metacity and Gnome Panel"
+        
     subprocess.Popen(["/usr/bin/metacity"])
     subprocess.Popen(["/usr/bin/gnome-panel"])



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]