summaryrefslogtreecommitdiff
path: root/classes/package.bbclass
diff options
context:
space:
mode:
authorPhil Blundell <philb@gnu.org>2008-09-07 12:57:29 +0000
committerPhil Blundell <philb@gnu.org>2008-09-07 12:57:29 +0000
commitcf7114179ead8ddff8f66e84d630811920ac9add (patch)
tree90daf5c738429539657e7dea79eb03f0d69cc88e /classes/package.bbclass
parentaf8d6b8139105e7a91e68c412b6cb55052ab98d5 (diff)
package.bbclass: add PACKAGE_SNAP_LIB_SYMLINKS
Diffstat (limited to 'classes/package.bbclass')
-rw-r--r--classes/package.bbclass24
1 files changed, 18 insertions, 6 deletions
diff --git a/classes/package.bbclass b/classes/package.bbclass
index e01479677f..4079e11ac8 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -581,6 +581,11 @@ python package_do_shlibs() {
if pstageactive == "1":
lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ if bb.data.getVar('PACKAGE_SNAP_LIB_SYMLINKS', d, True) == "1":
+ snap_symlinks = True
+ else:
+ snap_symlinks = False
+
needed = {}
private_libs = bb.data.getVar('PRIVATE_LIBS', d, 1)
for pkg in packages.split():
@@ -590,6 +595,7 @@ python package_do_shlibs() {
needed[pkg] = []
sonames = list()
top = os.path.join(pkgdest, pkg)
+ renames = []
for root, dirs, files in os.walk(top):
for file in files:
soname = None
@@ -605,12 +611,18 @@ python package_do_shlibs() {
if m:
needed[pkg].append(m.group(1))
m = re.match("\s+SONAME\s+([^\s]*)", l)
- if m and not m.group(1) in sonames:
- # if library is private (only used by package) then do not build shlib for it
- if not private_libs or -1 == private_libs.find(m.group(1)):
- sonames.append(m.group(1))
- if m and libdir_re.match(root):
- needs_ldconfig = True
+ if m:
+ this_soname = m.group(1)
+ if not this_soname in sonames:
+ # if library is private (only used by package) then do not build shlib for it
+ if not private_libs or -1 == private_libs.find(this_soname):
+ sonames.append(this_soname)
+ if libdir_re.match(root):
+ needs_ldconfig = True
+ if snap_symlinks and (file != soname):
+ renames.append((path, os.path.join(root, this_soname)))
+ for (old, new) in renames:
+ os.rename(old, new)
shlibs_file = os.path.join(shlibs_dir, pkg + ".list")
if os.path.exists(shlibs_file):
os.remove(shlibs_file)