14 |
14 |
15 |
15 |
16 # these are set from the main wscript file |
16 # these are set from the main wscript file |
17 APPNAME=None |
17 APPNAME=None |
18 VERSION=None |
18 VERSION=None |
|
19 bld=None |
19 |
20 |
20 # |
21 # |
21 # The last part of the path name to use to find the regression traces tarball. |
22 # The last part of the path name to use to find the regression traces tarball. |
22 # path will be APPNAME + '-' + VERSION + REGRESSION_SUFFIX + TRACEBALL_SUFFIX, |
23 # path will be APPNAME + '-' + VERSION + REGRESSION_SUFFIX + TRACEBALL_SUFFIX, |
23 # e.g., ns-3-dev-ref-traces.tar.bz2 |
24 # e.g., ns-3-dev-ref-traces.tar.bz2 |
63 |
64 |
64 def find_program(program_name, env): |
65 def find_program(program_name, env): |
65 launch_dir = os.path.abspath(Options.cwd_launch) |
66 launch_dir = os.path.abspath(Options.cwd_launch) |
66 top_dir = os.path.abspath(Options.launch_dir) |
67 top_dir = os.path.abspath(Options.launch_dir) |
67 found_programs = [] |
68 found_programs = [] |
68 for obj in Build.bld.all_task_gen: |
69 for obj in bld.all_task_gen: |
69 if not getattr(obj, 'is_ns3_program', False): |
70 if not getattr(obj, 'is_ns3_program', False): |
70 continue |
71 continue |
71 |
72 |
72 ## filter out programs not in the subtree starting at the launch dir |
73 ## filter out programs not in the subtree starting at the launch dir |
73 if not (obj.path.abspath().startswith(launch_dir) |
74 if not (obj.path.abspath().startswith(launch_dir) |
82 return obj |
83 return obj |
83 raise ValueError("program '%s' not found; available programs are: %r" |
84 raise ValueError("program '%s' not found; available programs are: %r" |
84 % (program_name, found_programs)) |
85 % (program_name, found_programs)) |
85 |
86 |
86 def get_proc_env(os_env=None): |
87 def get_proc_env(os_env=None): |
87 env = Build.bld.env |
88 env = bld.env |
88 if sys.platform == 'linux2': |
89 if sys.platform == 'linux2': |
89 pathvar = 'LD_LIBRARY_PATH' |
90 pathvar = 'LD_LIBRARY_PATH' |
90 elif sys.platform == 'darwin': |
91 elif sys.platform == 'darwin': |
91 pathvar = 'DYLD_LIBRARY_PATH' |
92 pathvar = 'DYLD_LIBRARY_PATH' |
92 elif sys.platform == 'win32': |
93 elif sys.platform == 'win32': |
109 if pathvar in proc_env: |
110 if pathvar in proc_env: |
110 proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH']) + [proc_env[pathvar]]) |
111 proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH']) + [proc_env[pathvar]]) |
111 else: |
112 else: |
112 proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH'])) |
113 proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH'])) |
113 |
114 |
114 pymoddir = Build.bld.path.find_dir('bindings/python').abspath(env) |
115 pymoddir = bld.path.find_dir('bindings/python').abspath(env) |
115 if 'PYTHONPATH' in proc_env: |
116 if 'PYTHONPATH' in proc_env: |
116 proc_env['PYTHONPATH'] = os.pathsep.join([pymoddir] + [proc_env['PYTHONPATH']]) |
117 proc_env['PYTHONPATH'] = os.pathsep.join([pymoddir] + [proc_env['PYTHONPATH']]) |
117 else: |
118 else: |
118 proc_env['PYTHONPATH'] = pymoddir |
119 proc_env['PYTHONPATH'] = pymoddir |
119 |
120 |
120 return proc_env |
121 return proc_env |
121 |
122 |
122 def run_argv(argv, os_env=None, cwd=None): |
123 def run_argv(argv, os_env=None, cwd=None): |
123 proc_env = get_proc_env(os_env) |
124 proc_env = get_proc_env(os_env) |
124 #env = Build.bld.env |
|
125 retval = subprocess.Popen(argv, env=proc_env, cwd=cwd).wait() |
125 retval = subprocess.Popen(argv, env=proc_env, cwd=cwd).wait() |
126 if retval: |
126 if retval: |
127 raise Utils.WafError("Command %s exited with code %i" % (argv, retval)) |
127 raise Utils.WafError("Command %s exited with code %i" % (argv, retval)) |
128 return retval |
128 return retval |
129 |
129 |
131 """ |
131 """ |
132 Return the program name and argv of the process that would be executed by |
132 Return the program name and argv of the process that would be executed by |
133 run_program(program_string, command_template). |
133 run_program(program_string, command_template). |
134 """ |
134 """ |
135 #print "get_run_program_argv(program_string=%r, command_template=%r)" % (program_string, command_template) |
135 #print "get_run_program_argv(program_string=%r, command_template=%r)" % (program_string, command_template) |
136 env = Build.bld.env |
136 env = bld.env |
137 |
137 |
138 if command_template in (None, '%s'): |
138 if command_template in (None, '%s'): |
139 argv = shlex.split(program_string) |
139 argv = shlex.split(program_string) |
140 program_name = argv[0] |
140 program_name = argv[0] |
141 |
141 |
185 return run_argv(execvec, cwd=cwd) |
185 return run_argv(execvec, cwd=cwd) |
186 |
186 |
187 |
187 |
188 |
188 |
189 def run_python_program(program_string): |
189 def run_python_program(program_string): |
190 env = Build.bld.env |
190 env = bld.env |
191 execvec = shlex.split(program_string) |
191 execvec = shlex.split(program_string) |
192 if (Options.options.cwd_launch): |
192 if (Options.options.cwd_launch): |
193 cwd = Options.options.cwd_launch |
193 cwd = Options.options.cwd_launch |
194 else: |
194 else: |
195 cwd = Options.cwd_launch |
195 cwd = Options.cwd_launch |