From ba6fdb996a56c10ce1517c2b97051619ea083f91 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 13 Jun 2017 03:43:12 -0400 Subject: [PATCH] Simplify path-determination in compile-generation. --- mesonbuild/backend/ninjabackend.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 0587cff92..428389625 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2102,24 +2102,23 @@ rule FORTRAN_DEP_HACK self.target_arg_cache[key] = commands commands = CompilerArgs(commands.compiler, commands) - if isinstance(src, mesonlib.File) and src.is_built: - rel_src = os.path.join(src.subdir, src.fname) - if os.path.isabs(rel_src): - assert(rel_src.startswith(self.environment.get_build_dir())) - rel_src = rel_src[len(self.environment.get_build_dir()) + 1:] - abs_src = os.path.join(self.environment.get_build_dir(), rel_src) - elif isinstance(src, mesonlib.File): + if isinstance(src, File): + source_dir = self.environment.get_source_dir() + build_dir = self.environment.get_build_dir() + abs_src = src.absolute_path(source_dir, build_dir) rel_src = src.rel_to_builddir(self.build_to_src) - abs_src = src.absolute_path(self.environment.get_source_dir(), - self.environment.get_build_dir()) + if src.is_built: + assert abs_src.startswith(build_dir) + if os.path.isabs(rel_src): + rel_src = rel_src[len(build_dir) + 1:] + else: + # Source files may not be from the source directory if they originate in source-only libraries, + # so we can't assert that the absolute path is anywhere in particular. + pass elif is_generated: raise AssertionError('BUG: broken generated source file handling for {!r}'.format(src)) else: - if isinstance(src, File): - rel_src = src.rel_to_builddir(self.build_to_src) - else: - raise InvalidArguments('Invalid source type: {!r}'.format(src)) - abs_src = os.path.join(self.environment.get_build_dir(), rel_src) + raise InvalidArguments('Invalid source type: {!r}'.format(src)) if isinstance(src, File): if src.is_built: src_filename = os.path.join(src.subdir, src.fname)