waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

proc.py (1725B)


      1 #! /usr/bin/env python
      2 # per rosengren 2011
      3 
      4 from os import environ, path
      5 from waflib import TaskGen, Utils
      6 
      7 def options(opt):
      8 	grp = opt.add_option_group('Oracle ProC Options')
      9 	grp.add_option('--oracle_home', action='store', default=environ.get('PROC_ORACLE'), help='Path to Oracle installation home (has bin/lib)')
     10 	grp.add_option('--tns_admin', action='store', default=environ.get('TNS_ADMIN'), help='Directory containing server list (TNS_NAMES.ORA)')
     11 	grp.add_option('--connection', action='store', default='dummy-user/dummy-password@dummy-server', help='Format: user/password@server')
     12 
     13 def configure(cnf):
     14 	env = cnf.env
     15 	if not env.PROC_ORACLE:
     16 		env.PROC_ORACLE = cnf.options.oracle_home
     17 	if not env.PROC_TNS_ADMIN:
     18 		env.PROC_TNS_ADMIN = cnf.options.tns_admin
     19 	if not env.PROC_CONNECTION:
     20 		env.PROC_CONNECTION = cnf.options.connection
     21 	cnf.find_program('proc', var='PROC', path_list=env.PROC_ORACLE + path.sep + 'bin')
     22 
     23 def proc(tsk):
     24 	env = tsk.env
     25 	gen = tsk.generator
     26 	inc_nodes = gen.to_incnodes(Utils.to_list(getattr(gen,'includes',[])) + env['INCLUDES'])
     27 
     28 	cmd = (
     29 		[env.PROC] +
     30 		['SQLCHECK=SEMANTICS'] +
     31 		(['SYS_INCLUDE=(' + ','.join(env.PROC_INCLUDES) + ')']
     32 			if env.PROC_INCLUDES else []) +
     33 		['INCLUDE=(' + ','.join(
     34 			[i.bldpath() for i in inc_nodes]
     35 		) + ')'] +
     36 		['userid=' + env.PROC_CONNECTION] +
     37 		['INAME=' + tsk.inputs[0].bldpath()] +
     38 		['ONAME=' + tsk.outputs[0].bldpath()]
     39 	)
     40 	exec_env = {
     41 		'ORACLE_HOME': env.PROC_ORACLE,
     42 		'LD_LIBRARY_PATH': env.PROC_ORACLE + path.sep + 'lib',
     43 	}
     44 	if env.PROC_TNS_ADMIN:
     45 		exec_env['TNS_ADMIN'] = env.PROC_TNS_ADMIN
     46 	return tsk.exec_command(cmd, env=exec_env)
     47 
     48 TaskGen.declare_chain(
     49 	name = 'proc',
     50 	rule = proc,
     51 	ext_in = '.pc',
     52 	ext_out = '.c',
     53 )
     54