summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-04-13 14:22:02 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2018-04-13 17:30:07 +0530
commitce9b13afd085e94a76c225d7b05f28664db41043 (patch)
tree1c08bccf6203212d5247167b8952e3f383ac1a02
parentcb597adb0170a4818a4950ca9a4fe3f6d5a6c9d2 (diff)
downloadmeson-nirbheek/remove-custom-target-backslashes-hack.tar.gz
custom targets: Don't replace \\ with /nirbheek/remove-custom-target-backslashes-hack
This is no longer required since we always use `/` as the path separator for file arguments on Windows now. The only effect this now has is to mangle the string args people pass to custom targets. Closes https://github.com/mesonbuild/meson/issues/1564
-rw-r--r--mesonbuild/backend/backends.py19
-rw-r--r--test cases/common/48 test args/copyfile.py14
-rw-r--r--test cases/common/48 test args/meson.build6
-rw-r--r--test cases/common/48 test args/sub1/meson.build7
4 files changed, 22 insertions, 24 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 916f68099..5c5bcb4b9 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -839,25 +839,6 @@ class Backend:
# Substitute the rest of the template strings
values = mesonlib.get_filenames_templates_dict(inputs, outputs)
cmd = mesonlib.substitute_values(cmd, values)
- # This should not be necessary but removing it breaks
- # building GStreamer on Windows. The underlying issue
- # is problems with quoting backslashes on Windows
- # which is the seventh circle of hell. The downside is
- # that this breaks custom targets whose command lines
- # have backslashes. If you try to fix this be sure to
- # check that it does not break GST.
- #
- # The bug causes file paths such as c:\foo to get escaped
- # into c:\\foo.
- #
- # Unfortunately we have not been able to come up with an
- # isolated test case for this so unless you manage to come up
- # with one, the only way is to test the building with Gst's
- # setup. Note this in your MR or ping us and we will get it
- # fixed.
- #
- # https://github.com/mesonbuild/meson/pull/737
- cmd = [i.replace('\\', '/') for i in cmd]
return inputs, outputs, cmd
def run_postconf_scripts(self):
diff --git a/test cases/common/48 test args/copyfile.py b/test cases/common/48 test args/copyfile.py
index ff42ac359..914812559 100644
--- a/test cases/common/48 test args/copyfile.py
+++ b/test cases/common/48 test args/copyfile.py
@@ -3,4 +3,18 @@
import sys
import shutil
+# If either of these use `\` as the path separator, it will cause problems with
+# MSYS, MSYS2, and Cygwin tools that expect the path separator to always be
+# `/`. All Native-Windows tools also accept `/` as the path separator, so
+# it's fine to always use that for arguments.
+# See: https://github.com/mesonbuild/meson/issues/1564
+#
+# Note that this applies to both MinGW and MSVC toolchains since people use
+# MSYS tools with both, or use a mixed toolchain environment.
+if '\\' in sys.argv[1]:
+ raise RuntimeError('Found \\ in source arg {!r}'.format(sys.argv[1]))
+
+if '\\' in sys.argv[2]:
+ raise RuntimeError('Found \\ in dest arg {!r}'.format(sys.argv[2]))
+
shutil.copyfile(sys.argv[1], sys.argv[2])
diff --git a/test cases/common/48 test args/meson.build b/test cases/common/48 test args/meson.build
index 81d34915a..99f995e21 100644
--- a/test cases/common/48 test args/meson.build
+++ b/test cases/common/48 test args/meson.build
@@ -27,9 +27,5 @@ test('file arg', testerpy, args : testfile, env : env_array)
copy = find_program('copyfile.py')
tester = executable('tester', 'tester.c')
-testfilect = custom_target('testfile',
- input : testfile,
- output : 'outfile.txt',
- build_by_default : true,
- command : [copy, '@INPUT@', '@OUTPUT@'])
+subdir('sub1')
test('custom target arg', tester, args : testfilect, env : env_array)
diff --git a/test cases/common/48 test args/sub1/meson.build b/test cases/common/48 test args/sub1/meson.build
new file mode 100644
index 000000000..67fb23579
--- /dev/null
+++ b/test cases/common/48 test args/sub1/meson.build
@@ -0,0 +1,7 @@
+# Needs to be in a subdir so the @OUTPUT@ contains a path seperator since it is
+# relative to the build root.
+testfilect = custom_target('testfile',
+ input : testfile,
+ output : 'outfile.txt',
+ build_by_default : true,
+ command : [copy, '@INPUT@', '@OUTPUT@'])