diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-03-02 17:41:25 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-03-04 13:00:29 +0100 |
commit | e724fd5438a20836be1b270c1f851502ac97fdd4 (patch) | |
tree | f1daabd4671eafffa37555cb5705b2ad5e5f7772 /mesonbuild/rewriter.py | |
parent | ff5e7eb104d015c462fdae2de76c967bf00c27ad (diff) | |
download | meson-e724fd5438a20836be1b270c1f851502ac97fdd4.zip meson-e724fd5438a20836be1b270c1f851502ac97fdd4.tar.gz meson-e724fd5438a20836be1b270c1f851502ac97fdd4.tar.bz2 |
rewriter: Handle duplicate target
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r-- | mesonbuild/rewriter.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py index 52c5a6f..2a41b2e 100644 --- a/mesonbuild/rewriter.py +++ b/mesonbuild/rewriter.py @@ -379,23 +379,31 @@ class Rewriter: sys.stderr.write(json.dumps(self.info_dump, indent=2)) def find_target(self, target: str): - def check_list(name: str): + def check_list(name: str) -> List[BaseNode]: + result = [] for i in self.interpreter.targets: if name == i['name'] or name == i['id']: - return i - return None + result += [i] + return result - tgt = check_list(target) - if tgt is not None: - return tgt + targets = check_list(target) + if targets: + if len(targets) == 1: + return targets[0] + else: + mlog.error('There are multiple targets matching', mlog.bold(target)) + for i in targets: + mlog.error(' -- Target name', mlog.bold(i['name']), 'with ID', mlog.bold(i['id'])) + mlog.error('Please try again with the unique ID of the target --> skipping') + return None # Check the assignments + tgt = None if target in self.interpreter.assignments: node = self.interpreter.assignments[target][0] if isinstance(node, FunctionNode): if node.func_name in ['executable', 'jar', 'library', 'shared_library', 'shared_module', 'static_library', 'both_libraries']: - name = self.interpreter.flatten_args(node.args)[0] - tgt = check_list(name) + tgt = self.interpreter.assign_vals[target][0] return tgt |