diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-12-23 00:28:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-23 00:28:00 +0200 |
commit | 4b7c39d9d1bc378e93ab23d3d9e3f6a8b16cfbf5 (patch) | |
tree | 631f02002237fd7566c52a723647c26a583119a5 /mesonbuild/build.py | |
parent | 8ee1c9a07a3a35e3ed262fbc358fd86c257a966e (diff) | |
parent | d5952531c717df50d4e762f47265036845acf499 (diff) | |
download | meson-4b7c39d9d1bc378e93ab23d3d9e3f6a8b16cfbf5.zip meson-4b7c39d9d1bc378e93ab23d3d9e3f6a8b16cfbf5.tar.gz meson-4b7c39d9d1bc378e93ab23d3d9e3f6a8b16cfbf5.tar.bz2 |
Merge pull request #1247 from centricular/fix-installed-soname-aliases
Fix soname symlinking after installation
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 6e3325d..c7d4125 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -798,8 +798,8 @@ class BuildTarget(): else: self.extra_args[language] = args - def get_aliaslist(self): - return [] + def get_aliases(self): + return {} def get_clike_dynamic_linker(self): ''' @@ -1038,7 +1038,7 @@ class SharedLibrary(BuildTarget): First we determine the filename template (self.filename_tpl), then we set the output filename (self.filename). - The template is needed while creating aliases (self.get_aliaslist), + The template is needed while creating aliases (self.get_aliases), which are needed while generating .so shared libraries for Linux. Besides this, there's also the import library name, which is only used @@ -1184,25 +1184,30 @@ class SharedLibrary(BuildTarget): def get_all_link_deps(self): return [self] + self.get_transitive_link_deps() - def get_aliaslist(self): + def get_aliases(self): """ If the versioned library name is libfoo.so.0.100.0, aliases are: - * libfoo.so.0 (soversion) - * libfoo.so (unversioned; for linking) + * libfoo.so.0 (soversion) -> libfoo.so.0.100.0 + * libfoo.so (unversioned; for linking) -> libfoo.so.0 """ + aliases = {} # Aliases are only useful with .so libraries. Also if the .so library # ends with .so (no versioning), we don't need aliases. if self.suffix != 'so' or self.filename.endswith('.so'): - return [] - # Unversioned alias: libfoo.so - aliases = [self.basic_filename_tpl.format(self)] - # If ltversion != soversion we create an soversion alias: libfoo.so.X + return {} + # If ltversion != soversion we create an soversion alias: + # libfoo.so.0 -> libfoo.so.0.100.0 if self.ltversion and self.ltversion != self.soversion: if not self.soversion: # This is done in self.process_kwargs() raise AssertionError('BUG: If library version is defined, soversion must have been defined') alias_tpl = self.filename_tpl.replace('ltversion', 'soversion') - aliases.append(alias_tpl.format(self)) + ltversion_filename = alias_tpl.format(self) + aliases[ltversion_filename] = self.filename + else: + ltversion_filename = self.filename + # Unversioned alias: libfoo.so -> libfoo.so.0 + aliases[self.basic_filename_tpl.format(self)] = ltversion_filename return aliases def type_suffix(self): |