diff options
6 files changed, 35 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 05614aa..6e25b9b 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -2851,7 +2851,7 @@ Try setting b_lundef to false instead.'''.format(self.coredata.options[OptionKey # subproject files, as long as they are scheduled to be installed. if validate_installable_file(norm): return - norm = Path(srcdir, subdir, fname).resolve() + norm = Path(os.path.abspath(Path(srcdir, subdir, fname))) if os.path.isdir(norm): inputtype = 'directory' else: diff --git a/test cases/unit/106 subproject symlink/main.c b/test cases/unit/106 subproject symlink/main.c new file mode 100644 index 0000000..62bd4b4 --- /dev/null +++ b/test cases/unit/106 subproject symlink/main.c @@ -0,0 +1,6 @@ +extern int foo(void); + +int main(void) +{ + return foo(); +} diff --git a/test cases/unit/106 subproject symlink/meson.build b/test cases/unit/106 subproject symlink/meson.build new file mode 100644 index 0000000..51c78c7 --- /dev/null +++ b/test cases/unit/106 subproject symlink/meson.build @@ -0,0 +1,8 @@ +project('foo', 'c') + +symlinked_subproject = subproject('symlinked_subproject') + +executable('foo', + sources : 'main.c', + dependencies : symlinked_subproject.get_variable('dep') +) diff --git a/test cases/unit/106 subproject symlink/symlinked_subproject/meson.build b/test cases/unit/106 subproject symlink/symlinked_subproject/meson.build new file mode 100644 index 0000000..61440c7 --- /dev/null +++ b/test cases/unit/106 subproject symlink/symlinked_subproject/meson.build @@ -0,0 +1,3 @@ +project('symlinked_subproject', 'c', version : '1.0.0') + +dep = declare_dependency(sources : 'src.c') diff --git a/test cases/unit/106 subproject symlink/symlinked_subproject/src.c b/test cases/unit/106 subproject symlink/symlinked_subproject/src.c new file mode 100644 index 0000000..97d7ad1 --- /dev/null +++ b/test cases/unit/106 subproject symlink/symlinked_subproject/src.c @@ -0,0 +1,4 @@ +int foo(void) +{ + return 0; +} diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py index 42bc60e..71e919e 100644 --- a/unittests/allplatformstests.py +++ b/unittests/allplatformstests.py @@ -4263,3 +4263,16 @@ class AllPlatformTests(BasePlatformTests): if self.backend is Backend.ninja: self.assertIn('Generating file.txt with a custom command', out) self.assertIn('Generating subdir/file.txt with a custom command', out) + + def test_symlinked_subproject(self): + testdir = os.path.join(self.unit_test_dir, '106 subproject symlink') + subproject_dir = os.path.join(testdir, 'subprojects') + subproject = os.path.join(testdir, 'symlinked_subproject') + symlinked_subproject = os.path.join(testdir, 'subprojects', 'symlinked_subproject') + if not os.path.exists(subproject_dir): + os.mkdir(subproject_dir) + os.symlink(subproject, symlinked_subproject) + self.addCleanup(os.remove, symlinked_subproject) + + self.init(testdir) + self.build() |