interpreter: Fix spurious warning in include_directories()

When doing include_directories('.') at the root of the subproject we
should not warn about sandboxing violation.
pull/8571/head
Xavier Claessens 4 years ago
parent 66d62a224e
commit 37d4c86e5b
  1. 4
      mesonbuild/interpreter.py
  2. 4
      test cases/common/240 includedir violation/meson.build
  3. 2
      test cases/common/240 includedir violation/subprojects/sub/meson.build
  4. 4
      test cases/common/240 includedir violation/test.json

@ -4601,7 +4601,7 @@ different subdirectory.
''') ''')
else: else:
try: try:
self.validate_within_subproject(a, '') self.validate_within_subproject(self.subdir, a)
except InterpreterException: except InterpreterException:
mlog.warning('include_directories sandbox violation!') mlog.warning('include_directories sandbox violation!')
print(f'''The project is trying to access the directory {a} which belongs to a different print(f'''The project is trying to access the directory {a} which belongs to a different
@ -4830,6 +4830,8 @@ Try setting b_lundef to false instead.'''.format(self.coredata.options[OptionKey
# /opt/vendorsdk/src/file_with_license_restrictions.c # /opt/vendorsdk/src/file_with_license_restrictions.c
return return
project_root = Path(srcdir, self.root_subdir) project_root = Path(srcdir, self.root_subdir)
if norm == project_root:
return
if project_root not in norm.parents: if project_root not in norm.parents:
raise InterpreterException(f'Sandbox violation: Tried to grab {inputtype} {norm.name} outside current (sub)project.') raise InterpreterException(f'Sandbox violation: Tried to grab {inputtype} {norm.name} outside current (sub)project.')
if project_root / self.subproject_dir in norm.parents: if project_root / self.subproject_dir in norm.parents:

@ -1,5 +1,9 @@
project('foo', 'c') project('foo', 'c')
# It is fine to include the root source dir
include_directories('.')
subproject('sub')
# This is here rather than in failing because this needs a # This is here rather than in failing because this needs a
# transition period to avoid breaking existing projects. # transition period to avoid breaking existing projects.
# Once this becomes an error, move this under failing tests. # Once this becomes an error, move this under failing tests.

@ -1,3 +1,3 @@
project('subproj', 'c') project('subproj', 'c')
# This is never actually executed, just here for completeness. include_directories('.')

@ -1,7 +1,9 @@
{ {
"stdout": [ "stdout": [
{ {
"line": "WARNING: include_directories sandbox violation!" "line": ".*WARNING: include_directories sandbox violation!",
"match": "re",
"count": 1
} }
] ]
} }

Loading…
Cancel
Save