Index: tbroadcast/HEAD/scripts/tbroadcast
===================================================================
--- tbroadcast/HEAD/scripts/tbroadcast	(revision 508)
+++ tbroadcast/HEAD/scripts/tbroadcast	(revision 517)
@@ -3,33 +3,42 @@
 # -- Author: V. Garonne
 # -- Mail: garonne@lal.in2p3.fr
-# -- Date: 08/25/2006 
+# -- Date: 08/25/2006
 # -- Name: tbroadcast
 # -- Description: main program
 #----------------------------------#
 
-import os
 import sys
-import string
+import time
 
 def usage():
-    print 'Usage : > tbroadcast [global options] [<command>]'
-    print '# command :'
-    print '#   <command>: command to execute'
-    print '# global options :'
-    print '#   -f=<file>             : Input file'
-    print '#   -help                 : Print help'
-    print '#   -local                : Reach packages only within the current project'
-    print '#   -global               : Reach packages in all CMTPATH/CMTPROJECTPATH items'    
-    print '#   -ignore_cycles        : Suppress automatically the cycles'
-    print '#   -make=<file>          : Generate a recursive Make, [see: http://www.tip.net.au/~millerp/rmch/recu-make-cons-harm.html]'
-    print '#   -nb=<num_worker>      : Change the total number of threads[default is 20]'
-    print '#   -no_keep_going        : Exit after the first exit code > 1 found and return it in the shell'
-    print '#   -output=<location>    : Output directory to store output files with the form <package>_output.log'
-    print '#   -error=<location>     : Output directory to store error output with the form <package>_error.log'
-    print '#   -perf=<file>          : Store for each package the time for executing the command in the <file> file'
-    print '#   -print                : Print dependencies for each package' 
-    print '#   -version              : version of tbroadcast'        
-    print '#   -silent               : Disable print'     
-    print '#   -test                 : Simulate execution'
+    print """
+Usage: tbroadcast [global options] [<command>]
+#
+# <command> is executed in <package>/cmt
+#
+# global options :
+#   -help                 : Print help
+#   -local                : Reach packages only within the current project
+#                         : if not specified reach packages in all CMTPATH/CMTPROJECTPATH items
+#   -ignore[_cycles]      : Suppress automatically the cycles
+#   -sort                 : Compile packages in order of use count, most significant first
+#   -nb=<num_worker>      : Change the total number of threads[default is 20]
+#   -output=<location>    : Output directory to store output files with the form <package>_output.log
+#   -error=<location>     : Output directory to store error output with the form <package>_error.log
+#   -perf=<file>          : Store for each package the time for executing the command in the <file> file
+#   -make=<file>          : Generate a recursive Make, [see: http://www.tip.net.au/~millerp/rmch/recu-make-cons-harm.html]
+#   -print                : Print dependencies for each package and exit
+#   -version              : Print version of tbroadcast and exit
+#   -test                 : Simulate execution and exit
+#   -                     : is accepted and does nothing
+#
+# Example:
+#   tbroadcast -local -ignore -nb=4 'make -j6'
+"""
+
+# Unused options
+#   -f=<file>             : Input file (option for debug only)
+#   -no_keep_going        : Exit after the first exit code > 1 found and return it in the shell
+#   -silent               : Disable print
 
 if __name__ == '__main__':
@@ -38,6 +47,7 @@
     cur_version = sys.version_info
 
-    if not (cur_version[0] > req_version[0] or (cur_version[0] == req_version[0]  and cur_version[1] >= req_version[1])): 
-        raise "must use python 2.5 or greater"
+    if not (cur_version[0] > req_version[0] or (cur_version[0] == req_version[0] and cur_version[1] >= req_version[1])):
+        print "tbroadcast: must use python 2.5 or greater"
+        sys.exit(-1)
 
     from tbroadcast import Scheduler
@@ -46,12 +56,12 @@
     num_worker    = 20
     command       = ''
-    version       = 'v2.0.4'
+    version       = 'v2.0.7'
     test          = False
-    check         = False
     print_graph   = False
     local         = False
     ignore_cycles = False
     silent        = False
-    perf          = False     
+    perf          = False
+    sort          = False
     output        = None
     error         = None
@@ -60,62 +70,73 @@
     makefile      = 'Makefile'
     keep_going    = True
-    
+
     if len(sys.argv) == 1:
-        test = True
-    else:        
-        for arg in sys.argv[1:len(sys.argv)]:            
+        usage()
+        sys.exit(-1)
+    else:
+        for arg in sys.argv[1:len(sys.argv)]:
+#            print "Argument is",arg
              if arg[0]=='-':
-                 option = string.split(arg,'=')[0]
+                 option = arg.split('=')[0]
                  if option == '-version':
                      print version
                      sys.exit(-1)
-                 if option == '-nb':
-                    num_worker = int (string.split(arg,'=')[1]) 
-                 if option == '-f':
-                    file = string.split(arg,'=')[1]
-                 if option == '-perf':
-                    perf = string.split(arg,'=')[1]
-                 if option == '-output':
-                    output = string.split(arg,'=')[1]
-                 if option == '-error':
-                    error = string.split(arg,'=')[1]
-                 if option == '-local':
-                     local= True
-                 if option == '-ignore_cycles':             
+                 elif option == '-nb':
+                     num_worker = int (arg.split('=')[1])
+                 elif option == '-f':
+                     file = arg.split('=')[1]
+                 elif option == '-perf':
+                     perf = arg.split('=')[1]
+                 elif option == '-output':
+                     output = arg.split('=')[1]
+                 elif option == '-error':
+                     error = arg.split('=')[1]
+                 elif option == '-local':
+                     local = True
+                 elif option == '-sort':
+                     sort = True
+                 elif option[:7] == '-ignore':
                      ignore_cycles = True
-                 if option == '-silent':             
-                     silent = True        
-                 if option == '-no_keep_going':             
+                 elif option == '-silent':
+                     silent = True
+                 elif option == '-no_keep_going':
                      keep_going = False
-                              
-                 if option == '-help':    
-                      usage()
-                      sys.exit(-1)      
-                                  
-                 if option == '-test':
-                         test = True   
-                 elif option == '-check':
-                         check = True   
+                 elif option == '-help':
+                     usage()
+                     sys.exit(-1)
+                 elif option == '-test':
+                     test = True
                  elif option == '-print':
-                         print_graph = True   
-                 elif option == '-make':        
+                     print_graph = True
+                 elif option == '-make':
                      make     = True
-                     makefile = string.split(arg,'=')[1]
+                     makefile = arg.split('=')[1]
+                 elif option == '-':
+                     pass
+                 else:
+                     print 'tbroadcast: bad option "%s", use -help for help' % option
+                     sys.exit(-1)
              else:
-                  command = arg
+                 command = arg
 
-    master = Scheduler (num_workers=num_worker, file=file, ignore_cycles=ignore_cycles, 
-                        local=local, output=output, error=error, silent=silent, perf=perf, 
-                        keep_going=keep_going)
+#   print "End of arguments. Command to execute", command
+
+    if not (command or test or print_graph):
+        print 'tbroadcast: no command specified'
+        sys.exit(-1)
+
+    master = Scheduler (num_workers=num_worker, file=file, ignore_cycles=ignore_cycles,
+                        local=local, output=output, error=error, silent=silent, perf=perf,
+                        keep_going=keep_going, sort=sort)
     if test:
         master.simulate_execution()
-    elif check:
-        master.check_execution (package=master.get_current_package())    
     elif print_graph:
-        master.print_dependencies ()
+        master.print_dependencies()
     elif make:
-        master.generate_make (makefile, command)    
+        master.generate_make (makefile, command)
     else:
+        print 'tbroadcast: start of job at', time.strftime('%d-%b-%Y %T')
         master.execute_all (command)
-    #sys.exit(-1);
+        print 'tbroadcast: end of job at', time.strftime('%d-%b-%Y %T')
+    #sys.exit(-1)
 #--------- EoF --------#
