diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 304bea3dd..64c8fa1b9 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -781,9 +781,17 @@ class Backend: @staticmethod def canonicalize_filename(fname: str) -> str: + parts = Path(fname).parts + hashed = '' + if len(parts) > 5: + temp = '/'.join(parts[-5:]) + # is it shorter to hash the beginning of the path? + if len(fname) > len(temp) + 41: + hashed = hashlib.sha1(fname.encode('utf-8')).hexdigest() + '_' + fname = temp for ch in ('/', '\\', ':'): fname = fname.replace(ch, '_') - return fname + return hashed + fname def object_filename_from_source(self, target: build.BuildTarget, source: 'FileOrString') -> str: assert isinstance(source, mesonlib.File)