mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
classes/package: move read_shlib_providers() to a common unit
This allows us to use this function elsewhere in the code. (From OE-Core rev: 657cff8a0f0e5db171b2ed9388a790ee0b135842) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
3e6e4e0198
commit
de8730ce2d
@@ -1391,32 +1391,11 @@ python package_do_shlibs() {
|
|||||||
|
|
||||||
pkgdest = d.getVar('PKGDEST', True)
|
pkgdest = d.getVar('PKGDEST', True)
|
||||||
|
|
||||||
shlibs_dirs = d.getVar('SHLIBSDIRS', True).split()
|
|
||||||
shlibswork_dir = d.getVar('SHLIBSWORKDIR', True)
|
shlibswork_dir = d.getVar('SHLIBSWORKDIR', True)
|
||||||
|
|
||||||
# Take shared lock since we're only reading, not writing
|
# Take shared lock since we're only reading, not writing
|
||||||
lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
|
lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
|
||||||
|
|
||||||
def read_shlib_providers():
|
|
||||||
list_re = re.compile('^(.*)\.list$')
|
|
||||||
# Go from least to most specific since the last one found wins
|
|
||||||
for dir in reversed(shlibs_dirs):
|
|
||||||
bb.debug(2, "Reading shlib providers in %s" % (dir))
|
|
||||||
if not os.path.exists(dir):
|
|
||||||
continue
|
|
||||||
for file in os.listdir(dir):
|
|
||||||
m = list_re.match(file)
|
|
||||||
if m:
|
|
||||||
dep_pkg = m.group(1)
|
|
||||||
fd = open(os.path.join(dir, file))
|
|
||||||
lines = fd.readlines()
|
|
||||||
fd.close()
|
|
||||||
for l in lines:
|
|
||||||
s = l.strip().split(":")
|
|
||||||
if s[0] not in shlib_provider:
|
|
||||||
shlib_provider[s[0]] = {}
|
|
||||||
shlib_provider[s[0]][s[1]] = (dep_pkg, s[2])
|
|
||||||
|
|
||||||
def linux_so(file, needed, sonames, renames, pkgver):
|
def linux_so(file, needed, sonames, renames, pkgver):
|
||||||
needs_ldconfig = False
|
needs_ldconfig = False
|
||||||
ldir = os.path.dirname(file).replace(pkgdest + "/" + pkg, '')
|
ldir = os.path.dirname(file).replace(pkgdest + "/" + pkg, '')
|
||||||
@@ -1513,8 +1492,7 @@ python package_do_shlibs() {
|
|||||||
use_ldconfig = False
|
use_ldconfig = False
|
||||||
|
|
||||||
needed = {}
|
needed = {}
|
||||||
shlib_provider = {}
|
shlib_provider = oe.package.read_shlib_providers(d)
|
||||||
read_shlib_providers()
|
|
||||||
|
|
||||||
for pkg in packages.split():
|
for pkg in packages.split():
|
||||||
private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) or ""
|
private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) or ""
|
||||||
|
|||||||
@@ -97,3 +97,29 @@ def filedeprunner(arg):
|
|||||||
raise e
|
raise e
|
||||||
|
|
||||||
return (pkg, provides, requires)
|
return (pkg, provides, requires)
|
||||||
|
|
||||||
|
|
||||||
|
def read_shlib_providers(d):
|
||||||
|
import re
|
||||||
|
|
||||||
|
shlib_provider = {}
|
||||||
|
shlibs_dirs = d.getVar('SHLIBSDIRS', True).split()
|
||||||
|
list_re = re.compile('^(.*)\.list$')
|
||||||
|
# Go from least to most specific since the last one found wins
|
||||||
|
for dir in reversed(shlibs_dirs):
|
||||||
|
bb.debug(2, "Reading shlib providers in %s" % (dir))
|
||||||
|
if not os.path.exists(dir):
|
||||||
|
continue
|
||||||
|
for file in os.listdir(dir):
|
||||||
|
m = list_re.match(file)
|
||||||
|
if m:
|
||||||
|
dep_pkg = m.group(1)
|
||||||
|
fd = open(os.path.join(dir, file))
|
||||||
|
lines = fd.readlines()
|
||||||
|
fd.close()
|
||||||
|
for l in lines:
|
||||||
|
s = l.strip().split(":")
|
||||||
|
if s[0] not in shlib_provider:
|
||||||
|
shlib_provider[s[0]] = {}
|
||||||
|
shlib_provider[s[0]][s[1]] = (dep_pkg, s[2])
|
||||||
|
return shlib_provider
|
||||||
|
|||||||
Reference in New Issue
Block a user