From 737e3b175886618eb28b46f3feed218fdad9c517 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 17 Dec 2016 17:12:56 +0100 Subject: build: use matroska.py & file2string.py as python modules --- waftools/generators/sources.py | 56 ++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 26 deletions(-) (limited to 'waftools') diff --git a/waftools/generators/sources.py b/waftools/generators/sources.py index b6af693e65..5d3349c442 100644 --- a/waftools/generators/sources.py +++ b/waftools/generators/sources.py @@ -1,14 +1,10 @@ from waflib.Build import BuildContext +from waflib import TaskGen +from io import StringIO +from TOOLS.matroska import generate_C_header, generate_C_definitions +from TOOLS.file2string import file2string import os -def __file2string_cmd__(ctx): - return '"${{BIN_PYTHON}}" "{0}/TOOLS/file2string.py" "${{SRC}}" > "${{TGT}}"' \ - .format(ctx.srcnode.abspath()) - -def __matroska_cmd__(ctx, argument): - return '"${{BIN_PYTHON}}" "{0}/TOOLS/matroska.py" "{1}" "${{SRC}}" > "${{TGT}}"' \ - .format(ctx.srcnode.abspath(), argument) - def __zshcomp_cmd__(ctx, argument): return '"${{BIN_PERL}}" "{0}/TOOLS/zsh.pl" "{1}" > "${{TGT}}"' \ .format(ctx.srcnode.abspath(), argument) @@ -21,20 +17,30 @@ def __file2string__(ctx, **kwargs): **kwargs ) -def __matroska_header__(ctx, **kwargs): - ctx( - rule = __matroska_cmd__(ctx, '--generate-header'), - before = ("c",), - name = os.path.basename(kwargs['target']), - **kwargs - ) - -def __matroska_definitions__(ctx, **kwargs): - ctx( - rule = __matroska_cmd__(ctx, '--generate-definitions'), - before = ("c",), - **kwargs - ) +def execf(self, fn): + setattr(self, 'rule', ' ') # waf doesn't print the task with no rule + target = getattr(self, 'target', None) + out = self.path.find_or_declare(target) + tmp = StringIO() + fn(tmp) + out.write(tmp.getvalue()) + tmp.close() + +@TaskGen.feature('file2string') +def f2s(self): + def fn(out): + source = getattr(self, 'source', None) + src = self.path.find_resource(source) + file2string(source, iter(src.read().splitlines()), out) + execf(self, fn) + +@TaskGen.feature('ebml_header') +def ebml_header(self): + execf(self, generate_C_header) + +@TaskGen.feature('ebml_definitions') +def ebml_definitions(self): + execf(self, generate_C_definitions) def __zshcomp__(ctx, **kwargs): ctx( @@ -44,7 +50,5 @@ def __zshcomp__(ctx, **kwargs): **kwargs ) -BuildContext.file2string = __file2string__ -BuildContext.matroska_header = __matroska_header__ -BuildContext.matroska_definitions = __matroska_definitions__ -BuildContext.zshcomp = __zshcomp__ +BuildContext.file2string = __file2string__ +BuildContext.zshcomp = __zshcomp__ -- cgit v1.2.3