diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2021-08-31 18:59:10 -0400 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2021-09-01 15:42:39 -0400 |
commit | 0b63dff3badf4f728d5dadda81dbef8de67ba164 (patch) | |
tree | 287538d78c50c49068ff90f6c325a837821be270 | |
parent | d67850b45e9ce323405e80aacee872049a3bc389 (diff) | |
download | meson-0b63dff3badf4f728d5dadda81dbef8de67ba164.zip meson-0b63dff3badf4f728d5dadda81dbef8de67ba164.tar.gz meson-0b63dff3badf4f728d5dadda81dbef8de67ba164.tar.bz2 |
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
-rw-r--r-- | mesonbuild/backend/backends.py | 5 | ||||
-rw-r--r-- | test cases/unit/65 alias target/meson.build | 2 | ||||
-rw-r--r-- | test cases/unit/65 alias target/subdir/meson.build | 6 | ||||
-rw-r--r-- | unittests/allplatformstests.py | 2 |
4 files changed, 14 insertions, 1 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index b119377..f8ccdbe 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.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' diff --git a/test cases/unit/65 alias target/meson.build b/test cases/unit/65 alias target/meson.build index 6934cc7..bcd4005 100644 --- a/test cases/unit/65 alias target/meson.build +++ b/test cases/unit/65 alias target/meson.build @@ -13,3 +13,5 @@ custom_target = custom_target('custom-target', ) alias_target('build-all', [exe_target, custom_target]) + +subdir('subdir') diff --git a/test cases/unit/65 alias target/subdir/meson.build b/test cases/unit/65 alias target/subdir/meson.build new file mode 100644 index 0000000..b3f5480 --- /dev/null +++ b/test cases/unit/65 alias target/subdir/meson.build @@ -0,0 +1,6 @@ +r = run_target('run-target', + command: [python3, '-c', 'print("a run target was here")'] +) + +alias_target('aliased-run', r) + diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py index 828ca58..fd88a27 100644 --- a/unittests/allplatformstests.py +++ b/unittests/allplatformstests.py @@ -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') |