Fixes to thes pbs send script
authorNathan Binkert <binkertn@umich.edu>
Wed, 9 Feb 2005 21:20:53 +0000 (16:20 -0500)
committerNathan Binkert <binkertn@umich.edu>
Wed, 9 Feb 2005 21:20:53 +0000 (16:20 -0500)
util/pbs/send.py:
    - add a -d to set the job root directory allowing one to run
    send.py from anywhere.
    - specify full paths to files instead of relative paths to make -d
    work and to allow ssh qsub to work again.
    - make the Link directory only copy links that point to regular files.

--HG--
extra : convert_revision : dd330cee08b97c5d72c3d58ef123f83ac7ccede7

util/pbs/send.py

index c0c56d98b466bbbebfeb6f3f55b1c2f5bcd334aa..1f174b1f8546ed75eecdf26039d793f3ab819c44 100755 (executable)
@@ -54,7 +54,7 @@ Usage:
 
 try:
     import getopt
-    opts, args = getopt.getopt(sys.argv[1:], '-cefhlq:v')
+    opts, args = getopt.getopt(sys.argv[1:], '-cd:efhlq:v')
 except getopt.GetoptError:
     sys.exit(usage)
 
@@ -65,42 +65,48 @@ force = False
 listonly = False
 queue = ''
 verbose = False
-for o,a in opts:
-    if o == '-c':
+rootdir = re.sub(r'^/\.automount/', r'/n/', os.getcwd())
+for opt,arg in opts:
+    if opt == '-c':
         clean = True
-    if o == '-e':
+    if opt == '-d':
+        rootdir = arg
+    if opt == '-e':
         onlyecho = True
-    if o == '-f':
+    if opt == '-f':
         force = True
-    if o == '-h':
+    if opt == '-h':
         print usage
         sys.exit(0)
-    if o == '-l':
+    if opt == '-l':
         listonly = True
-    if o == '-q':
-        queue = a
-    if o == '-v':
+    if opt == '-q':
+        queue = arg
+    if opt == '-v':
         verbose = True
 
+basedir = joinpath(rootdir, 'Base')
+linkdir = joinpath(rootdir, 'Link')
+
 for arg in args:
     exprs.append(re.compile(arg))
 
-if not listonly and not onlyecho and isdir('Link'):
+if not listonly and not onlyecho and isdir(linkdir):
     print 'Checking for outdated files in Link directory'
-    entries = listdir('Link')
+    entries = listdir(linkdir)
     for entry in entries:
-        link = joinpath('Link', entry)
-        if not islink(link):
+        link = joinpath(linkdir, entry)
+        if not islink(link) or not isfile(link):
             continue
 
-        base = joinpath('Base', entry)
+        base = joinpath(basedir, entry)
         if not isfile(base) or not filecmp(link, base):
-            print '%s is different than source %s...copying' % (base, link)
+            print 'Base/%s is different than Link/%s: copying' % (entry, entry)
             copyfile(link, base)
 
 import job, jobfile, pbs
 
-test = jobfile.JobFile(joinpath('Base', 'test.py'))
+test = jobfile.JobFile(joinpath(basedir, 'test.py'))
 
 joblist = []
 for jobname in test.jobs:
@@ -143,7 +149,6 @@ if not onlyecho:
     jl.append(jobname)
     joblist = jl
 
-rootdir = re.sub(r'^/\.automount/', r'/n/', os.getcwd())
 for jobname in joblist:
     jobdir = joinpath(rootdir, jobname)
 
@@ -165,5 +170,5 @@ for jobname in joblist:
     if len(queue):
         qsub.queue = queue
 
-    qsub.do(joinpath('Base', 'job.py'))
+    qsub.do(joinpath(basedir, 'job.py'))
     print >>sys.stderr, ''