diff options
| author | Mike Westerhof <mwester@dls.net> | 2008-09-08 06:07:20 +0000 |
|---|---|---|
| committer | Mike Westerhof <mwester@dls.net> | 2008-09-08 06:07:20 +0000 |
| commit | 078763a440425b9b9a0862e6ecabdf1c1af35def (patch) | |
| tree | 80e4caca405a3b94eb893b462312e41708ba0659 /classes | |
| parent | fbe2d6775362947d2aa59f27c3ab190997d10c02 (diff) | |
| parent | 313ea062889aba322b75726d8bb7276665aa4ea3 (diff) | |
merge of '79b90d4ef7df69035b001466908501f67f8aac76'
and '81a14649e513b12b58d75276170ffa386580f244'
Diffstat (limited to 'classes')
| -rw-r--r-- | classes/package.bbclass | 24 |
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) |
