[oe-commits] : package.bbclass: add PACKAGE_SNAP_LIB_SYMLINKS

OE GIT Trial gittrial at amethyst.openembedded.net
Sun Sep 7 13:32:57 UTC 2008


Module: OE.dev
Branch: master
Commit: 8c0c0af568485e609e47e31d6ad8feb7ce1183b8
URL:    http://gitweb.openembedded.net//OE.dev.git/?a=commit;h=8c0c0af568485e609e47e31d6ad8feb7ce1183b8

Author:  <pb at openembedded.org>
Date:   Sun Sep  7 12:57:29 2008 +0000

package.bbclass: add PACKAGE_SNAP_LIB_SYMLINKS

---

 classes/package.bbclass |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/classes/package.bbclass b/classes/package.bbclass
index e014796..4079e11 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)





More information about the Openembedded-commits mailing list