|
|
""""configureScripts loops over all scripts in source/madpy/scripts/bin
|
|
|
and edits them to use the site-specific
|
|
|
definitions in madrigal.cfg and copies the resulting configured file to
|
|
|
MADROOT/bin.
|
|
|
|
|
|
# $Id: configureScripts.py 7354 2021-03-31 18:52:46Z brideout $
|
|
|
"""
|
|
|
# standard python imports
|
|
|
import os, sys, os.path
|
|
|
|
|
|
|
|
|
def testPerm(fname):
|
|
|
"""testPerm returns True if permission should be changed, False is not.
|
|
|
Wants permission to be 775 or 777
|
|
|
"""
|
|
|
st = os.stat(fname)
|
|
|
perm = oct(st.st_mode)
|
|
|
user = int(perm[-3])
|
|
|
group = int(perm[-2])
|
|
|
other = int(perm[-1])
|
|
|
if user != 7 or group != 7:
|
|
|
return(True)
|
|
|
elif other not in (7,5):
|
|
|
return(True)
|
|
|
return(False)
|
|
|
|
|
|
|
|
|
# Extract configuration variables from madrigal.cfg
|
|
|
f = open('madrigal.cfg')
|
|
|
lines = f.readlines()
|
|
|
f.close()
|
|
|
madDict = {} # dict of keywords, values
|
|
|
for line in lines:
|
|
|
if line[0] == '#':
|
|
|
continue
|
|
|
items = line.split()
|
|
|
if len(items) < 3:
|
|
|
continue
|
|
|
if items[1] != '=':
|
|
|
continue
|
|
|
madDict[items[0]] = ' '.join(items[2:])
|
|
|
|
|
|
# add PYTHONEXE
|
|
|
madroot = madDict['MADROOT']
|
|
|
madDict['PYTHONEXE'] = os.path.join(madroot, 'bin/python')
|
|
|
|
|
|
# Get the variable values and sort so that longest variable names
|
|
|
# are checked first
|
|
|
keys = sorted(madDict, key=len)
|
|
|
keys.reverse()
|
|
|
|
|
|
f = open('MANIFEST')
|
|
|
lines = f.readlines()
|
|
|
f.close()
|
|
|
|
|
|
# change files only if one of the following strings match
|
|
|
matchStrings = ["source/madpy/scripts/bin",
|
|
|
"source/madpy/madrigalWeb/global",
|
|
|
"source/madpy/madrigalWeb/test",
|
|
|
"configureExperiments"]
|
|
|
|
|
|
for line in lines:
|
|
|
filename = line.strip()
|
|
|
found = False
|
|
|
for match in matchStrings:
|
|
|
if filename.find(match) != -1:
|
|
|
found = True
|
|
|
break
|
|
|
if found:
|
|
|
if filename.find("configureExperiments") != -1:
|
|
|
dest = os.path.join(madroot, "configureExperiments")
|
|
|
else:
|
|
|
dest = os.path.join(madroot, 'bin', os.path.basename(filename))
|
|
|
f = open(filename)
|
|
|
text = f.read()
|
|
|
f.close()
|
|
|
for key in keys:
|
|
|
if text.find(key) != -1:
|
|
|
text = text.replace(key, madDict[key])
|
|
|
f = open(dest, 'w')
|
|
|
f.write(text)
|
|
|
f.close()
|
|
|
print('%s -> %s' % (filename, dest))
|
|
|
|
|
|
if testPerm(dest):
|
|
|
os.chmod(filename, 775)
|
|
|
|
|
|
|
|
|
|