diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-01-31 22:30:17 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-02-02 10:37:32 +0200 |
commit | 20ae08eb1bba1156721cc999a08f93c7c8237b4b (patch) | |
tree | 74e1967604d2e30ef4df5055ea960e011031ae43 /mesonbuild/backend/ninjabackend.py | |
parent | 86365d9ac2576f1b4799f37be306f25b2ec47e44 (diff) | |
download | meson-20ae08eb1bba1156721cc999a08f93c7c8237b4b.zip meson-20ae08eb1bba1156721cc999a08f93c7c8237b4b.tar.gz meson-20ae08eb1bba1156721cc999a08f93c7c8237b4b.tar.bz2 |
Only quote colons on build lines. Closes #2961.
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 9318926..ecb43aa 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -38,8 +38,12 @@ else: execute_wrapper = '' rmfile_prefix = 'rm -f {} &&' -def ninja_quote(text): - for char in ('$', ' ', ':'): +def ninja_quote(text, is_build_line=False): + if is_build_line: + qcs = ('$', ' ', ':') + else: + qcs = ('$', ' ') + for char in qcs: text = text.replace(char, '$' + char) if '\n' in text: errmsg = '''Ninja does not support newlines in rules. The content was: @@ -87,13 +91,13 @@ class NinjaBuildElement: def write(self, outfile): self.check_outputs() - line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]), + line = 'build %s: %s %s' % (' '.join([ninja_quote(i, True) for i in self.outfilenames]), self.rule, - ' '.join([ninja_quote(i) for i in self.infilenames])) + ' '.join([ninja_quote(i, True) for i in self.infilenames])) if len(self.deps) > 0: - line += ' | ' + ' '.join([ninja_quote(x) for x in self.deps]) + line += ' | ' + ' '.join([ninja_quote(x, True) for x in self.deps]) if len(self.orderdeps) > 0: - line += ' || ' + ' '.join([ninja_quote(x) for x in self.orderdeps]) + line += ' || ' + ' '.join([ninja_quote(x, True) for x in self.orderdeps]) line += '\n' # This is the only way I could find to make this work on all # platforms including Windows command shell. Slash is a dir separator |