summaryrefslogtreecommitdiffstats
path: root/waftools
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2016-12-17 17:12:56 +0100
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2017-01-05 11:25:18 +0100
commit737e3b175886618eb28b46f3feed218fdad9c517 (patch)
tree5e755481ae5330d7af1ff720e3c4a79cac5467be /waftools
parent0e7dd6d4ff3c7510a147ba68f43040828dcf486f (diff)
downloadmpv-737e3b175886618eb28b46f3feed218fdad9c517.tar.bz2
mpv-737e3b175886618eb28b46f3feed218fdad9c517.tar.xz
build: use matroska.py & file2string.py as python modules
Diffstat (limited to 'waftools')
-rw-r--r--waftools/generators/sources.py56
1 files changed, 30 insertions, 26 deletions
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__