diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-04-21 16:00:46 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-04-21 16:04:24 +0530 |
commit | e0ab5125b4480950b433461d5f6180ade5e5e94f (patch) | |
tree | 78eab11dd009d5898f811d093c2be7f4e37932d4 | |
parent | 2993eaf8844cfc04800ac22ab4012c8ee6f87b0e (diff) | |
download | meson-nirbheek/fix-library-symname.tar.gz |
ninja backend: Fix shared library symbols pathnirbheek/fix-library-symname
The entire subdirectory was getting duplicated, which was exceeding the
max path limit in Python on Windows and causing build failures.
Example:
subprojects/gst-plugins-bad/gst-libs/gst/uridownloader/subprojects@gst-plugins-bad@gst-libs@gst@uridownloader@@gsturidownloader-1.0@sha/subprojects/gst-plugins-bad/gst-libs/gst/uridownloader/gsturidownloader-1.0-0.dll.symbols
This path is too long and opening it will cause a FileNotFoundError on
Windows.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index d423832bc..e0750f983 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2356,10 +2356,11 @@ rule FORTRAN_DEP_HACK return pch_objects def generate_shsym(self, outfile, target): - target_name = self.get_target_filename(target) + target_name = target.get_filename() + target_file = self.get_target_filename(target) targetdir = self.get_target_private_dir(target) symname = os.path.join(targetdir, target_name + '.symbols') - elem = NinjaBuildElement(self.all_outputs, symname, 'SHSYM', target_name) + elem = NinjaBuildElement(self.all_outputs, symname, 'SHSYM', target_file) if self.environment.is_cross_build() and self.environment.cross_info.need_cross_compiler(): elem.add_item('CROSS', '--cross-host=' + self.environment.cross_info.config['host_machine']['system']) elem.write(outfile) @@ -2611,7 +2612,7 @@ rule FORTRAN_DEP_HACK def get_dependency_filename(self, t): if isinstance(t, build.SharedLibrary): - return os.path.join(self.get_target_private_dir(t), self.get_target_filename(t) + '.symbols') + return os.path.join(self.get_target_private_dir(t), t.get_filename() + '.symbols') elif isinstance(t, mesonlib.File): if t.is_built: return t.relative_name() |