00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 from os import environ
00038 from os.path import join
00039 from repro.functions.GetParBuilder import get_par_act
00040 from repro.functions.GetParBuilder import get_par_emitter
00041 from repro.functions.GetParBuilder import get_par_method
00042 from repro.functions.RushFunctions import RUSH_EMITTER
00043 from repro.functions.RushFunctions import flow_join
00044 from repro.functions.RushFunctions import gen_suffix
00045 from repro.functions.RushFunctions import rsf_emitter
00046 from repro.functions.RushFunctions import rsf_program_prefix
00047 from repro.functions.RushFunctions import rush_gen
00048 from repro.functions.RushFunctions import rush_method
00049 from repro.functions.RushFunctions import sfbin_method
00050
00051
00052 RUSH_EMITTERS = {'.rsf':rsf_emitter}
00053
00054 STDIN = "${stdin and SOURCES and '< ' + SOURCES[0].path or ''}"
00055 STDOUT = "${stdout and TARGETS and '> ' + TARGETS[0].path or ''}"
00056 stdin = True
00057 stdout = True
00058
00059 REPROEXPORTS= ['RSFROOT','DATAPATH','TMPDATAPATH','RSFDOC','RSFFIGS']
00060
00061 CMDLIST = "${flow_join(_flow_command)}"
00062 RUSHSTR = "$STDIN $CMDLIST $STDOUT"
00063
00064 SF = {}
00065
00066
00067
00068
00069
00070 def generate(env):
00071
00072 REPROROOT = environ.get('REPROROOT')
00073 if REPROROOT:
00074
00075 REPROBIN = join( REPROROOT,"bin" )
00076 REPROLIB = join( REPROROOT,"lib" )
00077
00078 env.PrependENVPath( 'PYTHONPATH', REPROLIB )
00079 env.PrependENVPath( 'PATH', REPROBIN )
00080
00081 else:
00082 REPROBIN = None
00083 REPROLIB = None
00084
00085 env.AppendENVPath( 'PATH', environ['PATH'] )
00086 env['REPROROOT'] = REPROROOT
00087 env['REPROBIN'] = REPROBIN
00088 env['REPROLIB'] = REPROLIB
00089
00090 RSFROOT = environ.get('RSFROOT')
00091 if RSFROOT:
00092 RSFBIN = join( RSFROOT,"bin" )
00093 RSFLIB = join( RSFROOT,"lib" )
00094 env.PrependENVPath( 'PYTHONPATH', RSFLIB )
00095 env.PrependENVPath( 'PATH', RSFBIN )
00096 else:
00097 RSFBIN = None
00098 RSFLIB = None
00099
00100 env.Append( REPROEXPORTS= REPROEXPORTS )
00101
00102 env.AppendENVPath( 'PATH', environ['PATH'] )
00103
00104 env['RSFROOT'] = RSFROOT
00105 env['RSFBIN'] = RSFBIN
00106 env['RSFLIB'] = RSFLIB
00107 env['DATAPATH'] = environ.get('DATAPATH','.')
00108
00109 env['GETPAR'] = {'.rsf': "sfget parform=n $par < $SOURCE" }
00110 GetParBuilder = env.Builder( action={'.rsf':get_par_act},
00111 emitter={'.rsf':get_par_emitter},
00112 varlist=['GETPAR'],
00113 single_source=1,
00114 )
00115
00116 env['RUSH_EMITTERS'] = RUSH_EMITTERS
00117 env['stdin'] = stdin
00118 env['STDIN'] = STDIN
00119 env['stdout'] = stdout
00120 env['STDOUT'] = STDOUT
00121
00122 env['flow_join'] = flow_join
00123
00124 env['CMDLIST'] = CMDLIST
00125 env['RUSHSTR'] = RUSHSTR
00126
00127 rush_bldr = env.Builder( generator=rush_gen,
00128 emitter=RUSH_EMITTER,
00129 suffix=gen_suffix,
00130
00131 )
00132
00133 env['BUILDERS']['_Rush'] = rush_bldr
00134 env["BUILDERS"]['_GetPar'] = GetParBuilder
00135
00136 env.AddMethod( sfbin_method,'sfbin')
00137
00138
00139 env.AddMethod( rush_method, 'Rush')
00140 env.AddMethod( get_par_method,'GetPar')
00141
00142 env['SF'] = SF
00143 env['SF']['.rsf'] = rsf_program_prefix
00144
00145
00146
00147
00148
00149 def exists(env):
00150 return 1
00151
00152