run_target: do not yield broken names with subdirs

A run_target object created in a subdir/meson.build always has a ninja
rule name of "name", not "subdir/name".

Fixes #9175
pull/9202/head
Eli Schwartz 4 years ago
parent d67850b45e
commit 0b63dff3ba
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 5
      mesonbuild/backend/backends.py
  2. 2
      test cases/unit/65 alias target/meson.build
  3. 6
      test cases/unit/65 alias target/subdir/meson.build
  4. 2
      unittests/allplatformstests.py

@ -358,7 +358,10 @@ class Backend:
@lru_cache(maxsize=None)
def get_target_dir(self, target: T.Union[build.Target, build.CustomTargetIndex]) -> str:
if self.environment.coredata.get_option(OptionKey('layout')) == 'mirror':
if isinstance(target, build.RunTarget):
# this produces no output, only a dummy top-level name
dirname = ''
elif self.environment.coredata.get_option(OptionKey('layout')) == 'mirror':
dirname = target.get_subdir()
else:
dirname = 'meson-out'

@ -13,3 +13,5 @@ custom_target = custom_target('custom-target',
)
alias_target('build-all', [exe_target, custom_target])
subdir('subdir')

@ -0,0 +1,6 @@
r = run_target('run-target',
command: [python3, '-c', 'print("a run target was here")']
)
alias_target('aliased-run', r)

@ -3076,6 +3076,8 @@ class AllPlatformTests(BasePlatformTests):
self.run_target('build-all')
self.assertPathExists(os.path.join(self.builddir, 'prog' + exe_suffix))
self.assertPathExists(os.path.join(self.builddir, 'hello.txt'))
out = self.run_target('aliased-run')
self.assertIn('a run target was here', out)
def test_configure(self):
testdir = os.path.join(self.common_test_dir, '2 cpp')

Loading…
Cancel
Save