import sys import os import string import inspect import shutil from casa_stack_manip import stack_frame_find gl=stack_frame_find( ) PYVER = str(sys.version_info[0]) + "." + str(sys.version_info[1]) SCRIPT_REPOS = os.environ["CASAPATH"].split()[0] + '/' + os.environ["CASAPATH"].split()[1] + '/lib/python' + PYVER # To support casapy-test releases which have different structure SCRIPT_REPOS2 = os.environ["CASAPATH"].split()[0] SCRIPT_REPOS2 += "/lib64/python" + PYVER SCRIPT_REPOS3 = os.environ["CASAPATH"].split()[0] SCRIPT_REPOS3 += "/lib/python" + PYVER SCRIPT_REPOS4 = os.environ["CASAPATH"].split()[0] SCRIPT_REPOS4 += "/Resources/python" def locatescript(lescript=''): a=os.popen("which casa", "r") lepath=string.split(a.read(),"/bin")[0] if (os.path.exists(SCRIPT_REPOS+"/regressions/"+lescript)): lepath = SCRIPT_REPOS+"/regressions/"+lescript elif (os.path.exists(SCRIPT_REPOS2+"/regressions/"+lescript)): lepath = SCRIPT_REPOS2+"/regressions/"+lescript elif (os.path.exists(SCRIPT_REPOS3+"/regressions/"+lescript)): lepath = SCRIPT_REPOS3+"/regressions/"+lescript elif (os.path.exists(SCRIPT_REPOS4+"/regressions/"+lescript)): lepath = SCRIPT_REPOS4+"/regressions/"+lescript elif (os.path.exists(SCRIPT_REPOS+"/demos/"+lescript)): lepath = SCRIPT_REPOS+"/demos/"+lescript elif (os.path.exists(SCRIPT_REPOS+"/"+lescript)): lepath = SCRIPT_REPOS+"/"+lescript elif(os.path.exists(lepath+"/python/"+PYVER+"/"+lescript)): lepath=lepath+"/python/"+PYVER+"/"+lescript elif(os.path.exists(lepath+"/lib/python"+PYVER+"/"+lescript)): lepath=lepath+"/lib/python"+PYVER+"/"+lescript elif(os.path.exists('/usr/bin/casapyinfo')): #locate the /usr/bin one a=os.popen("/usr/bin/casapyinfo --environ | grep CASAPATH", "r") x=a.read() lepath=string.split(string.split(x,'="')[1], " ")[0]+"/lib/python"+PYVER+"/"+lescript else: raise Exception, "Regression script %s not found "%(lescript) return lepath def copydata(name, destdir): destdir = str(destdir) ok = False if not os.path.isdir(destdir): raise RuntimeError('destination directory (' + destdir + ') must exist...') for root, dirs, files in os.walk(gl['casa']['dirs']['data'] + "/regression"): if name in dirs: full_path = root + "/" + name shutil.copytree(full_path,destdir + "/" + name) ok = True break elif name in files: full_path = root + "/" + name shutil.copy(full_path,destdir) ok = True break if not ok: for root, dirs, files in os.walk(gl['casa']['dirs']['data']): if name in dirs: full_path = root + "/" + name shutil.copytree(full_path,destdir + "/" + name) ok = True break elif name in files: full_path = root + "/" + name shutil.copy(full_path,destdir) ok = True break if not ok: raise RuntimeError( 'failed to find "' + name + '" in ' + gl['casa']['dirs']['data'] )