ctdb-daemon: Use ctdb_parse_node_address() in ctdbd
[samba4-gss.git] / third_party / waf / waflib / extras / sas.py
blob754c6148dec4458d4b349277399e6b00afb6ec25
1 #!/usr/bin/env python
2 # encoding: utf-8
3 # Mark Coggeshall, 2010
5 "SAS support"
7 import os
8 from waflib import Task, Errors, Logs
9 from waflib.TaskGen import feature, before_method
11 sas_fun, _ = Task.compile_fun('sas -sysin ${SRCFILE} -log ${LOGFILE} -print ${LSTFILE}', shell=False)
13 class sas(Task.Task):
14 vars = ['SAS', 'SASFLAGS']
15 def run(task):
16 command = 'SAS'
17 fun = sas_fun
19 node = task.inputs[0]
20 logfilenode = node.change_ext('.log')
21 lstfilenode = node.change_ext('.lst')
23 # set the cwd
24 task.cwd = task.inputs[0].parent.get_src().abspath()
25 Logs.debug('runner: %r on %r', command, node)
27 SASINPUTS = node.parent.get_bld().abspath() + os.pathsep + node.parent.get_src().abspath() + os.pathsep
28 task.env.env = {'SASINPUTS': SASINPUTS}
30 task.env.SRCFILE = node.abspath()
31 task.env.LOGFILE = logfilenode.abspath()
32 task.env.LSTFILE = lstfilenode.abspath()
33 ret = fun(task)
34 if ret:
35 Logs.error('Running %s on %r returned a non-zero exit', command, node)
36 Logs.error('SRCFILE = %r', node)
37 Logs.error('LOGFILE = %r', logfilenode)
38 Logs.error('LSTFILE = %r', lstfilenode)
39 return ret
41 @feature('sas')
42 @before_method('process_source')
43 def apply_sas(self):
44 if not getattr(self, 'type', None) in ('sas',):
45 self.type = 'sas'
47 self.env['logdir'] = getattr(self, 'logdir', 'log')
48 self.env['lstdir'] = getattr(self, 'lstdir', 'lst')
50 deps_lst = []
52 if getattr(self, 'deps', None):
53 deps = self.to_list(self.deps)
54 for filename in deps:
55 n = self.path.find_resource(filename)
56 if not n:
57 n = self.bld.root.find_resource(filename)
58 if not n:
59 raise Errors.WafError('cannot find input file %s for processing' % filename)
60 if not n in deps_lst:
61 deps_lst.append(n)
63 for node in self.to_nodes(self.source):
64 if self.type == 'sas':
65 task = self.create_task('sas', src=node)
66 task.dep_nodes = deps_lst
67 self.source = []
69 def configure(self):
70 self.find_program('sas', var='SAS', mandatory=False)