diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2014-01-19 16:24:19 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-01-21 10:20:13 +0000 |
commit | 1180ec37e4d2c0ea509c7532e43faab003ae8390 (patch) | |
tree | 5a1b82a39e934795f9315be9cc515089f03a08e4 | |
parent | bd938fe51052e8d25156b60b3762d01b3f2e176c (diff) | |
download | poky-1180ec37e4d2c0ea509c7532e43faab003ae8390.tar.gz |
package.bbclass: show warning when package is providing already provided shlib
* move read_shlib_providers before registering package as provider
and show warning when different package tries to provide something
already provided.
[YOCTO #4628]
(From OE-Core rev: 8141e3f61f12c8901b990496bcf6b76a9db95a57)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/package.bbclass | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 7dcec5ebf4..9b511a6bc9 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass | |||
@@ -1356,6 +1356,7 @@ python package_do_shlibs() { | |||
1356 | list_re = re.compile('^(.*)\.list$') | 1356 | list_re = re.compile('^(.*)\.list$') |
1357 | # Go from least to most specific since the last one found wins | 1357 | # Go from least to most specific since the last one found wins |
1358 | for dir in reversed(shlibs_dirs): | 1358 | for dir in reversed(shlibs_dirs): |
1359 | bb.debug(2, "Reading shlib providers in %s" % (dir)) | ||
1359 | if not os.path.exists(dir): | 1360 | if not os.path.exists(dir): |
1360 | continue | 1361 | continue |
1361 | for file in os.listdir(dir): | 1362 | for file in os.listdir(dir): |
@@ -1471,6 +1472,8 @@ python package_do_shlibs() { | |||
1471 | 1472 | ||
1472 | needed = {} | 1473 | needed = {} |
1473 | shlib_provider = {} | 1474 | shlib_provider = {} |
1475 | read_shlib_providers() | ||
1476 | |||
1474 | for pkg in packages.split(): | 1477 | for pkg in packages.split(): |
1475 | private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) | 1478 | private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) |
1476 | needs_ldconfig = False | 1479 | needs_ldconfig = False |
@@ -1504,6 +1507,11 @@ python package_do_shlibs() { | |||
1504 | if len(sonames): | 1507 | if len(sonames): |
1505 | fd = open(shlibs_file, 'w') | 1508 | fd = open(shlibs_file, 'w') |
1506 | for s in sonames: | 1509 | for s in sonames: |
1510 | if s in shlib_provider: | ||
1511 | (old_pkg, old_pkgver) = shlib_provider[s] | ||
1512 | if old_pkg != pkg: | ||
1513 | bb.warn('%s-%s was registered as shlib provider for %s, changing it to %s-%s because it was built later' % (old_pkg, old_pkgver, s, pkg, pkgver)) | ||
1514 | bb.debug(1, 'registering %s-%s as shlib provider for %s' % (pkg, pkgver, s)) | ||
1507 | fd.write(s + '\n') | 1515 | fd.write(s + '\n') |
1508 | shlib_provider[s] = (pkg, pkgver) | 1516 | shlib_provider[s] = (pkg, pkgver) |
1509 | fd.close() | 1517 | fd.close() |
@@ -1517,8 +1525,7 @@ python package_do_shlibs() { | |||
1517 | postinst = '#!/bin/sh\n' | 1525 | postinst = '#!/bin/sh\n' |
1518 | postinst += d.getVar('ldconfig_postinst_fragment', True) | 1526 | postinst += d.getVar('ldconfig_postinst_fragment', True) |
1519 | d.setVar('pkg_postinst_%s' % pkg, postinst) | 1527 | d.setVar('pkg_postinst_%s' % pkg, postinst) |
1520 | 1528 | bb.debug(1, 'LIBNAMES: pkg %s sonames %s' % (pkg, sonames)) | |
1521 | read_shlib_providers() | ||
1522 | 1529 | ||
1523 | bb.utils.unlockfile(lf) | 1530 | bb.utils.unlockfile(lf) |
1524 | 1531 | ||