summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildtools/wafsamba/configure_file.py44
-rw-r--r--buildtools/wafsamba/wafsamba.py9
2 files changed, 52 insertions, 1 deletions
diff --git a/buildtools/wafsamba/configure_file.py b/buildtools/wafsamba/configure_file.py
new file mode 100644
index 0000000000..8e2ba3bc23
--- /dev/null
+++ b/buildtools/wafsamba/configure_file.py
@@ -0,0 +1,44 @@
+# handle substitution of variables in .in files
+
+import Build, sys, Logs
+from samba_utils import *
+
+def subst_at_vars(task):
+ '''substiture @VAR@ style variables in a file'''
+
+ env = task.env
+ src = task.inputs[0].srcpath(env)
+ tgt = task.outputs[0].bldpath(env)
+
+ f = open(src, 'r')
+ s = f.read()
+ f.close()
+ # split on the vars
+ a = re.split('(@\w+@)', s)
+ out = []
+ for v in a:
+ if re.match('@\w+@', v):
+ vname = v[1:-1]
+ if not vname in task.env and vname.upper() in task.env:
+ vname = vname.upper()
+ if not vname in task.env:
+ Logs.error("Unknown substitution %s in %s" % (v, task.name))
+ sys.exit(1)
+ v = SUBST_VARS_RECURSIVE(task.env[vname], task.env)
+ out.append(v)
+ contents = ''.join(out)
+ f = open(tgt, 'w')
+ s = f.write(contents)
+ f.close()
+ return 0
+
+def CONFIGURE_FILE(bld, in_file, **kwargs):
+ '''configure file'''
+
+ base=os.path.basename(in_file)
+ t = bld.SAMBA_GENERATOR('INFILE_%s' % base,
+ rule = subst_at_vars,
+ source = in_file + '.in',
+ target = in_file,
+ vars = kwargs)
+Build.BuildContext.CONFIGURE_FILE = CONFIGURE_FILE
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 1fb1241024..64624d71d5 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -31,6 +31,7 @@ import samba_wildcard
import stale_files
import symbols
import pkgconfig
+import configure_file
# some systems have broken threading in python
if os.environ.get('WAF_NOTHREADS') == '1':
@@ -579,6 +580,12 @@ def SAMBA_GENERATOR(bld, name, rule, source='', target='',
if not enabled:
return
+ dep_vars = []
+ if isinstance(vars, dict):
+ dep_vars = vars.keys()
+ elif isinstance(vars, list):
+ dep_vars = vars
+
bld.SET_BUILD_GROUP(group)
t = bld(
rule=rule,
@@ -589,7 +596,7 @@ def SAMBA_GENERATOR(bld, name, rule, source='', target='',
before='cc',
ext_out='.c',
samba_type='GENERATOR',
- dep_vars = [rule] + (vars or []),
+ dep_vars = [rule] + dep_vars,
name=name)
if always: