summaryrefslogtreecommitdiffstats
path: root/meta/classes/package.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r--meta/classes/package.bbclass54
1 files changed, 22 insertions, 32 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index fbdccfbe6d..97a92eff22 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1350,6 +1350,7 @@ SHLIBSWORKDIR = "${PKGDESTWORK}/${MLPREFIX}shlibs2"
1350 1350
1351python package_do_shlibs() { 1351python package_do_shlibs() {
1352 import re, pipes 1352 import re, pipes
1353 import subprocess as sub
1353 1354
1354 exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', 0) 1355 exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', 0)
1355 if exclude_shlibs: 1356 if exclude_shlibs:
@@ -1459,38 +1460,27 @@ python package_do_shlibs() {
1459 prov = (combo, ldir, pkgver) 1460 prov = (combo, ldir, pkgver)
1460 sonames.append(prov) 1461 sonames.append(prov)
1461 if file.endswith('.dylib') or file.endswith('.so'): 1462 if file.endswith('.dylib') or file.endswith('.so'):
1462 lafile = file.replace(os.path.join(pkgdest, pkg), d.getVar('PKGD', True)) 1463 rpath = []
1463 # Drop suffix 1464 p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-l', file],stdout=sub.PIPE,stderr=sub.PIPE)
1464 lafile = lafile.rsplit(".",1)[0] 1465 err, out = p.communicate()
1465 lapath = os.path.dirname(lafile) 1466 # If returned succesfully, process stderr for results
1466 lafile = os.path.basename(lafile) 1467 if p.returncode == 0:
1467 # Find all combinations 1468 for l in err.split("\n"):
1468 combos = get_combinations(lafile) 1469 l = l.strip()
1469 for combo in combos: 1470 if l.startswith('path '):
1470 if os.path.exists(lapath + '/' + combo + '.la'): 1471 rpath.append(l.split()[1])
1471 break 1472
1472 lafile = lapath + '/' + combo + '.la' 1473 p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-L', file],stdout=sub.PIPE,stderr=sub.PIPE)
1473 1474 err, out = p.communicate()
1474 #bb.note("Foo2: %s" % lafile) 1475 # If returned succesfully, process stderr for results
1475 #bb.note("Foo %s" % file) 1476 if p.returncode == 0:
1476 if os.path.exists(lafile): 1477 for l in err.split("\n"):
1477 fd = open(lafile, 'r') 1478 l = l.strip()
1478 lines = fd.readlines() 1479 if not l or l.endswith(":"):
1479 fd.close() 1480 continue
1480 for l in lines: 1481 name = os.path.basename(l.split()[0]).rsplit(".", 1)[0]
1481 m = re.match("\s*dependency_libs=\s*'(.*)'", l) 1482 if name and name not in needed[pkg]:
1482 if m: 1483 needed[pkg].append((name, file, []))
1483 deps = m.group(1).split(" ")
1484 for dep in deps:
1485 #bb.note("Trying %s for %s" % (dep, pkg))
1486 name = None
1487 if dep.endswith(".la"):
1488 name = os.path.basename(dep).replace(".la", "")
1489 elif dep.startswith("-l"):
1490 name = dep.replace("-l", "lib")
1491 if name and name not in needed[pkg]:
1492 needed[pkg].append((name, lafile, []))
1493 #bb.note("Adding %s for %s" % (name, pkg))
1494 1484
1495 if d.getVar('PACKAGE_SNAP_LIB_SYMLINKS', True) == "1": 1485 if d.getVar('PACKAGE_SNAP_LIB_SYMLINKS', True) == "1":
1496 snap_symlinks = True 1486 snap_symlinks = True