diff options
| author | Slawek Lis <slis@gentoo.org> | 2014-11-07 21:39:54 +0100 |
|---|---|---|
| committer | Slawek Lis <slis@gentoo.org> | 2014-11-07 21:39:54 +0100 |
| commit | 1d42d9f56121932daff89a0676956fe16884c60f (patch) | |
| tree | 78813ce998f70917543897f851f85f903af114c6 | |
| parent | c20844cad28caf6554e90d65f8da3d072a2adb9f (diff) | |
| download | gentoolkit-1d42d9f56121932daff89a0676956fe16884c60f.tar.gz | |
revdep --library fixes
| -rw-r--r-- | pym/gentoolkit/revdep_rebuild/analyse.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/pym/gentoolkit/revdep_rebuild/analyse.py b/pym/gentoolkit/revdep_rebuild/analyse.py index c553526..556812d 100644 --- a/pym/gentoolkit/revdep_rebuild/analyse.py +++ b/pym/gentoolkit/revdep_rebuild/analyse.py @@ -146,8 +146,27 @@ class LibCheck(object): def _setslibs(self, l, b): '''Internal function. Use the class's setlibs variable''' - self.alllibs = '|'.join( - [x for x in self.searchlibs if ('lib%s' % (b) in x)]) + '|' + sonames = [] + for s in self.searchlibs: + par, soname = os.path.split(s) + if par: + # consider as this is full pathname + # we need soname only + + if os.path.exists(s): + # try to extract some more info + for line in scan(['-BF', '%f %S %M'], [s], 1, self.logger): + _, soname, bits = line.split() + bits = bits[8:] + if bits == b: + # we don't want to look in inappropriate arch's libs + sonames.append(soname) + continue + sonames.append(soname) + else: + # this is only filename or it's part + sonames.append(soname) + self.alllibs = '|'.join(sonames) + '|' self.logger.debug("\tLibCheck._setslibs(), new alllibs: %s" %(self.alllibs)) @@ -248,15 +267,15 @@ def analyse(settings, logger, libraries=None, la_libraries=None, """ searchbits = set() - if _libs_to_check: + '''if _libs_to_check: for lib in _libs_to_check: if "lib64" in lib: searchbits.add('64') elif "lib32" in lib: searchbits.add('32') else: - _libs_to_check = set() - searchbits.update(['64', '32']) + _libs_to_check = set()''' + searchbits.update(['64', '32']) if libraries and la_libraries and libraries_links and binaries: logger.info(blue(' * ') + |
