75 lines
2.6 KiB
Python
Executable File
75 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#*-----------------------------------------------------------------------*
|
|
#| |
|
|
#| Copyright (c) 2019 by Paul Scherrer Institute (http://www.psi.ch) |
|
|
#| |
|
|
#| Author Thierry Zamofing (thierry.zamofing@psi.ch) |
|
|
#*-----------------------------------------------------------------------*
|
|
'''
|
|
generate .subs and _startup.script files
|
|
mode bits:
|
|
0x001: unused
|
|
0x002: genIOC()
|
|
0x004: genConfig()
|
|
0x008: genLauncher()
|
|
0x010: genIOCgalil()
|
|
0x100: dumpEPICS()
|
|
0x200: updateSetPoints()
|
|
|
|
to test gpasciiComander e.g type:
|
|
gpasciiCommander -p cfg -n generate/cfg/SAROP21-OOMV092.cfg
|
|
or
|
|
for fn in generate/cfg/*.cfg; do echo $fn; gpasciiCommander -n $fn -p cfg/ >> /tmp/cfg.log; done
|
|
|
|
To check which modules versions are used:
|
|
for H in SAROP11-CPPM-MOT6761 SAROP31-CPPM-MOT6761 SATOP11-CPPM-MOT5531 SAROP11-CPPM-MOT6762 SAROP31-CPPM-MOT6762 SATOP31-CPPM-MOT553A SATOP11-CPPM-MOT5532 SATOP11-CPPM-MOT5533 SAROP21-CPPM-MOT6762 SAROP21-CPPM-MOT6763 SAROP11-CPPM-MOT6765 SAROP11-CPPM-MOT6766 SATOP31-CPPM-MOT6421 SAROP31-CPPM-MOT7173
|
|
do
|
|
caget $H:MOD_VER | grep OOM
|
|
done
|
|
|
|
|
|
|
|
Long Doc'''
|
|
|
|
tplApp='''\
|
|
#!/bin/bash
|
|
# Check if Python version is less than 3.6
|
|
if python -c 'import sys; exit(1) if sys.version_info[0] < 3 or sys.version_info[1] < 6 else exit(0)'
|
|
then
|
|
BIN=python
|
|
else
|
|
BIN=/opt/gfa/python-3.8/latest/bin/python
|
|
fi
|
|
APP={app}
|
|
echo $BIN $APP
|
|
$BIN $APP
|
|
'''
|
|
|
|
import os, sys
|
|
if __name__=='__main__':
|
|
def parse_args():
|
|
import argparse
|
|
(h, t)=os.path.split(sys.argv[0]);cmd='\n '+(t if len(h)>20 else sys.argv[0])+' '
|
|
#print(sys.argv,h,t)
|
|
exampleCmd=(
|
|
'-b /tmp -a sample',
|
|
'-b /sf/controls -a PSAS079',
|
|
'-b /sf/furka -a ARESvis -p EsfRixsApps',
|
|
)
|
|
epilog=__doc__+'\nExamples:'+''.join(map(lambda s:cmd+s, exampleCmd))+'\n'
|
|
|
|
parser = argparse.ArgumentParser(epilog=epilog,formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parser.add_argument('-b', '--base', type=str, help='base path', default='')
|
|
parser.add_argument('-a', '--app', type=str, help='application ', default='s')
|
|
parser.add_argument('-p', '--pkg', type=str, help='package ', default='')
|
|
args = parser.parse_args()
|
|
fn=os.path.join(args.base,'bin',args.app)
|
|
app=os.path.join(args.base,'applications',args.pkg,args.app,args.app+'.py')
|
|
print('generate {} that links to {}'.format(fn,app))
|
|
|
|
with open(fn,'w') as fh:
|
|
fh.write(tplApp.format(app=app))
|
|
os.chmod(fn,0o755)
|
|
parse_args()
|
|
|