aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter.py2
-rw-r--r--test cases/failing/42 abs subdir/bob/meson.build2
-rw-r--r--test cases/failing/42 abs subdir/meson.build6
3 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index bcc7977..224f98e 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2132,6 +2132,8 @@ requirements use the version keyword argument instead.''')
raise InvalidArguments('Must not go into subprojects dir with subdir(), use subproject() instead.')
prev_subdir = self.subdir
subdir = os.path.join(prev_subdir, args[0])
+ if os.path.isabs(subdir):
+ raise InvalidArguments('Subdir argument must be a relative path.')
if subdir in self.visited_subdirs:
raise InvalidArguments('Tried to enter directory "%s", which has already been visited.'
% subdir)
diff --git a/test cases/failing/42 abs subdir/bob/meson.build b/test cases/failing/42 abs subdir/bob/meson.build
new file mode 100644
index 0000000..7bbf4b2
--- /dev/null
+++ b/test cases/failing/42 abs subdir/bob/meson.build
@@ -0,0 +1,2 @@
+# This file is never reached.
+x = 3
diff --git a/test cases/failing/42 abs subdir/meson.build b/test cases/failing/42 abs subdir/meson.build
new file mode 100644
index 0000000..8c23224
--- /dev/null
+++ b/test cases/failing/42 abs subdir/meson.build
@@ -0,0 +1,6 @@
+project('abs subdir', 'c')
+
+# For some reason people insist on doing this, probably
+# because Make has taught them to never rely on anything.
+subdir(join_paths(meson.source_root(), 'bob'))
+