aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2016-12-20 03:56:46 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2016-12-22 17:08:32 +0200
commit18c38df875ed99324c74dea2c6d9765f25c10ff8 (patch)
tree9e73de350c4939af86669b77711467b4856d439c
parent6f5a5622b94161ab851ec498f5a95a8ae181c785 (diff)
downloadmeson-18c38df875ed99324c74dea2c6d9765f25c10ff8.zip
meson-18c38df875ed99324c74dea2c6d9765f25c10ff8.tar.gz
meson-18c38df875ed99324c74dea2c6d9765f25c10ff8.tar.bz2
Add Generator.process_files to reduce code duplication.
-rw-r--r--mesonbuild/build.py9
-rw-r--r--mesonbuild/interpreter.py7
-rw-r--r--mesonbuild/modules/qt4.py9
-rw-r--r--mesonbuild/modules/qt5.py9
-rw-r--r--mesonbuild/modules/windows.py4
5 files changed, 19 insertions, 19 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index afd8b0a..6e3325d 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -911,6 +911,15 @@ class Generator():
def get_arglist(self):
return self.arglist
+ def process_files(self, name, files, state, extra_args=[]):
+ output = GeneratedList(self, extra_args=extra_args)
+ for f in files:
+ if not isinstance(f, str):
+ raise InvalidArguments('{} arguments must be strings.'.format(name))
+ output.add_file(os.path.join(state.subdir, f))
+ return output
+
+
class GeneratedList():
def __init__(self, generator, extra_args=[]):
if hasattr(generator, 'held_object'):
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index e86f779..0f6ea1c 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -318,11 +318,10 @@ class GeneratorHolder(InterpreterObject):
self.methods.update({'process' : self.process_method})
def process_method(self, args, kwargs):
- check_stringlist(args)
extras = mesonlib.stringlistify(kwargs.get('extra_args', []))
- gl = GeneratedListHolder(self, extras)
- [gl.add_file(os.path.join(self.interpreter.subdir, a)) for a in args]
- return gl
+ gl = self.held_object.process_files('Generator', args, self.interpreter, extra_args=extras)
+ return GeneratedListHolder(gl)
+
class GeneratedListHolder(InterpreterObject):
def __init__(self, arg1, extra_args=[]):
diff --git a/mesonbuild/modules/qt4.py b/mesonbuild/modules/qt4.py
index 2d89792..8df4f3e 100644
--- a/mesonbuild/modules/qt4.py
+++ b/mesonbuild/modules/qt4.py
@@ -140,22 +140,19 @@ class Qt4Module():
ui_kwargs = {'output' : 'ui_@BASENAME@.h',
'arguments' : ['-o', '@OUTPUT@', '@INPUT@']}
ui_gen = build.Generator([self.uic], ui_kwargs)
- ui_output = build.GeneratedList(ui_gen)
- [ui_output.add_file(os.path.join(state.subdir, a)) for a in ui_files]
+ ui_output = ui_gen.process_files('Qt4 ui', ui_files, state)
sources.append(ui_output)
if len(moc_headers) > 0:
moc_kwargs = {'output' : 'moc_@BASENAME@.cpp',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
- moc_output = build.GeneratedList(moc_gen)
- [moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_headers]
+ moc_output = moc_gen.process_files('Qt4 moc header', moc_headers, state)
sources.append(moc_output)
if len(moc_sources) > 0:
moc_kwargs = {'output' : '@BASENAME@.moc',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
- moc_output = build.GeneratedList(moc_gen)
- [moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_sources]
+ moc_output = moc_gen.process_files('Qt4 moc source', moc_sources, state)
sources.append(moc_output)
return sources
diff --git a/mesonbuild/modules/qt5.py b/mesonbuild/modules/qt5.py
index 35a475a..d4cd261 100644
--- a/mesonbuild/modules/qt5.py
+++ b/mesonbuild/modules/qt5.py
@@ -146,22 +146,19 @@ class Qt5Module():
ui_kwargs = {'output' : 'ui_@BASENAME@.h',
'arguments' : ['-o', '@OUTPUT@', '@INPUT@']}
ui_gen = build.Generator([self.uic], ui_kwargs)
- ui_output = build.GeneratedList(ui_gen)
- [ui_output.add_file(os.path.join(state.subdir, a)) for a in ui_files]
+ ui_output = ui_gen.process_files('Qt5 ui', ui_files, state)
sources.append(ui_output)
if len(moc_headers) > 0:
moc_kwargs = {'output' : 'moc_@BASENAME@.cpp',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
- moc_output = build.GeneratedList(moc_gen)
- [moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_headers]
+ moc_output = moc_gen.process_files('Qt5 moc header', moc_headers, state)
sources.append(moc_output)
if len(moc_sources) > 0:
moc_kwargs = {'output' : '@BASENAME@.moc',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
- moc_output = build.GeneratedList(moc_gen)
- [moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_sources]
+ moc_output = moc_gen.process_files('Qt5 moc source', moc_sources, state)
sources.append(moc_output)
return sources
diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py
index ad882cb..012f4d0 100644
--- a/mesonbuild/modules/windows.py
+++ b/mesonbuild/modules/windows.py
@@ -40,12 +40,10 @@ class WindowsModule:
suffix = 'o'
if not rescomp.found():
raise MesonException('Could not find Windows resource compiler %s.' % ' '.join(rescomp.get_command()))
- res_files = mesonlib.stringlistify(args)
res_kwargs = {'output' : '@BASENAME@.' + suffix,
'arguments': res_args}
res_gen = build.Generator([rescomp], res_kwargs)
- res_output = build.GeneratedList(res_gen)
- [res_output.add_file(os.path.join(state.subdir, a)) for a in res_files]
+ res_output = res_gen.process_files('Windows resource', args, state)
return res_output
def initialize():