summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/package.bbclass24
-rw-r--r--meta/lib/oe/package.py26
2 files changed, 27 insertions, 23 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index dc4025d327..fc501fcdea 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1391,32 +1391,11 @@ python package_do_shlibs() {
1391 1391
1392 pkgdest = d.getVar('PKGDEST', True) 1392 pkgdest = d.getVar('PKGDEST', True)
1393 1393
1394 shlibs_dirs = d.getVar('SHLIBSDIRS', True).split()
1395 shlibswork_dir = d.getVar('SHLIBSWORKDIR', True) 1394 shlibswork_dir = d.getVar('SHLIBSWORKDIR', True)
1396 1395
1397 # Take shared lock since we're only reading, not writing 1396 # Take shared lock since we're only reading, not writing
1398 lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}")) 1397 lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
1399 1398
1400 def read_shlib_providers():
1401 list_re = re.compile('^(.*)\.list$')
1402 # Go from least to most specific since the last one found wins
1403 for dir in reversed(shlibs_dirs):
1404 bb.debug(2, "Reading shlib providers in %s" % (dir))
1405 if not os.path.exists(dir):
1406 continue
1407 for file in os.listdir(dir):
1408 m = list_re.match(file)
1409 if m:
1410 dep_pkg = m.group(1)
1411 fd = open(os.path.join(dir, file))
1412 lines = fd.readlines()
1413 fd.close()
1414 for l in lines:
1415 s = l.strip().split(":")
1416 if s[0] not in shlib_provider:
1417 shlib_provider[s[0]] = {}
1418 shlib_provider[s[0]][s[1]] = (dep_pkg, s[2])
1419
1420 def linux_so(file, needed, sonames, renames, pkgver): 1399 def linux_so(file, needed, sonames, renames, pkgver):
1421 needs_ldconfig = False 1400 needs_ldconfig = False
1422 ldir = os.path.dirname(file).replace(pkgdest + "/" + pkg, '') 1401 ldir = os.path.dirname(file).replace(pkgdest + "/" + pkg, '')
@@ -1513,8 +1492,7 @@ python package_do_shlibs() {
1513 use_ldconfig = False 1492 use_ldconfig = False
1514 1493
1515 needed = {} 1494 needed = {}
1516 shlib_provider = {} 1495 shlib_provider = oe.package.read_shlib_providers(d)
1517 read_shlib_providers()
1518 1496
1519 for pkg in packages.split(): 1497 for pkg in packages.split():
1520 private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) or "" 1498 private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) or ""
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index f8b532220a..ea6feaaea4 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -97,3 +97,29 @@ def filedeprunner(arg):
97 raise e 97 raise e
98 98
99 return (pkg, provides, requires) 99 return (pkg, provides, requires)
100
101
102def read_shlib_providers(d):
103 import re
104
105 shlib_provider = {}
106 shlibs_dirs = d.getVar('SHLIBSDIRS', True).split()
107 list_re = re.compile('^(.*)\.list$')
108 # Go from least to most specific since the last one found wins
109 for dir in reversed(shlibs_dirs):
110 bb.debug(2, "Reading shlib providers in %s" % (dir))
111 if not os.path.exists(dir):
112 continue
113 for file in os.listdir(dir):
114 m = list_re.match(file)
115 if m:
116 dep_pkg = m.group(1)
117 fd = open(os.path.join(dir, file))
118 lines = fd.readlines()
119 fd.close()
120 for l in lines:
121 s = l.strip().split(":")
122 if s[0] not in shlib_provider:
123 shlib_provider[s[0]] = {}
124 shlib_provider[s[0]][s[1]] = (dep_pkg, s[2])
125 return shlib_provider