aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend/ninjabackend.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-01-31 22:30:17 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2018-02-02 10:37:32 +0200
commit20ae08eb1bba1156721cc999a08f93c7c8237b4b (patch)
tree74e1967604d2e30ef4df5055ea960e011031ae43 /mesonbuild/backend/ninjabackend.py
parent86365d9ac2576f1b4799f37be306f25b2ec47e44 (diff)
downloadmeson-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.py16
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