diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-12-06 22:52:29 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-12-06 20:27:33 +0200 |
commit | c7a2664cb7043160d653718179de97d4c7976e34 (patch) | |
tree | 7af0eaaa6a75bd148c45bb24e0b6cee3fb9a0d20 | |
parent | c9818c02ecd9750eb9fd95ce510a31eb1d99e1f7 (diff) | |
download | meson-c7a2664cb7043160d653718179de97d4c7976e34.zip meson-c7a2664cb7043160d653718179de97d4c7976e34.tar.gz meson-c7a2664cb7043160d653718179de97d4c7976e34.tar.bz2 |
Better error when passing invalid objects to install_header
This will print the object type when you pass a generated file to
install_header instead of printing an assert.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 4 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 71797ed..cc0167d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -663,7 +663,9 @@ int dummy; if outdir is None: outdir = os.path.join(incroot, h.get_install_subdir()) for f in h.get_sources(): - assert(isinstance(f, File)) + if not isinstance(f, File): + msg = 'Invalid header type {!r} can\'t be installed' + raise MesonException(msg.format(f)) abspath = f.absolute_path(srcdir, builddir) i = [abspath, outdir] d.headers.append(i) diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 2167b81..dbf3eba 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -343,6 +343,10 @@ class GeneratedListHolder(InterpreterObject): else: self.held_object = arg1 + def __repr__(self): + r = '<{}: {!r}>' + return r.format(self.__class__.__name__, self.held_object.get_outputs()) + def add_file(self, a): self.held_object.add_file(a) @@ -497,6 +501,11 @@ class BuildTargetHolder(InterpreterObject): 'private_dir_include' : self.private_dir_include_method, }) + def __repr__(self): + r = '<{} {}: {}>' + h = self.held_object + return r.format(self.__class__.__name__, h.get_id(), h.filename) + def is_cross(self): return self.held_object.is_cross() @@ -545,6 +554,11 @@ class CustomTargetHolder(InterpreterObject): self.methods.update({'full_path' : self.full_path_method, }) + def __repr__(self): + r = '<{} {}: {}>' + h = self.held_object + return r.format(self.__class__.__name__, h.get_id(), h.command) + def full_path_method(self, args, kwargs): return self.interpreter.backend.get_target_filename_abs(self.held_object) @@ -552,6 +566,11 @@ class RunTargetHolder(InterpreterObject): def __init__(self, name, command, args, dependencies, subdir): self.held_object = build.RunTarget(name, command, args, dependencies, subdir) + def __repr__(self): + r = '<{} {}: {}>' + h = self.held_object + return r.format(self.__class__.__name__, h.get_id(), h.command) + class Test(InterpreterObject): def __init__(self, name, suite, exe, is_parallel, cmd_args, env, should_fail, timeout, workdir): InterpreterObject.__init__(self) |