summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2006-09-12 15:59:43 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2006-09-12 15:59:43 +0000
commitbb1352ba5f25781d237e20ad4e8bce6e46026abf (patch)
treed62f7fc3bed3158310455b740a6efdb5dff69371
parent4ab89539ad667366b53663c2a1e83d9e82e36a1f (diff)
package.bbclass: Detect duplicates in PACKAGES properly.
* Fix bug which caused non-detection. * Make visible error message for such condition. * But still recover and continue for now, while we don't have all occurances fixed in metadata. Note that while content of the package will be ok, metadata can be wrong. So, recover behavior should not be relied upon, this going to be fatal condition later. Oked-by: RP, hrw
-rw-r--r--classes/package.bbclass26
1 files changed, 15 insertions, 11 deletions
diff --git a/classes/package.bbclass b/classes/package.bbclass
index 8dbc5d7b25..89615b8667 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -259,12 +259,16 @@ python populate_packages () {
return (s[stat.ST_MODE] & stat.S_IEXEC)
# Sanity check PACKAGES for duplicates - should be moved to
- # sanity.bbclass once we have he infrastucture
- pkgs = []
+ # sanity.bbclass once we have the infrastucture
+ package_list = []
for pkg in packages.split():
- if pkg in pkgs:
- bb.error("%s is listed in PACKAGES mutliple times. Undefined behaviour will result." % pkg)
- pkgs += pkg
+ if pkg in package_list:
+ bb.error("-------------------")
+ bb.error("%s is listed in PACKAGES mutliple times, this leads to packaging errors." % pkg)
+ bb.error("Please fix the metadata/report this as bug to OE bugtracker.")
+ bb.error("-------------------")
+ else:
+ package_list.append(pkg)
if (bb.data.getVar('INHIBIT_PACKAGE_STRIP', d, 1) != '1'):
stripfunc = ""
@@ -281,7 +285,7 @@ python populate_packages () {
bb.data.setVarFlag('RUNSTRIP', 'func', 1, localdata)
bb.build.exec_func('RUNSTRIP', localdata)
- for pkg in packages.split():
+ for pkg in package_list:
localdata = bb.data.createCopy(d)
root = os.path.join(workdir, "install", pkg)
@@ -343,7 +347,7 @@ python populate_packages () {
bb.build.exec_func("package_name_hook", d)
- for pkg in packages.split():
+ for pkg in package_list:
pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
if pkgname is None:
bb.data.setVar('PKG_%s' % pkg, pkg, d)
@@ -352,7 +356,7 @@ python populate_packages () {
dangling_links = {}
pkg_files = {}
- for pkg in packages.split():
+ for pkg in package_list:
dangling_links[pkg] = []
pkg_files[pkg] = []
inst_root = os.path.join(workdir, "install", pkg)
@@ -371,12 +375,12 @@ python populate_packages () {
target = os.path.join(root[len(inst_root):], target)
dangling_links[pkg].append(os.path.normpath(target))
- for pkg in packages.split():
+ for pkg in package_list:
rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 1) or bb.data.getVar('RDEPENDS', d, 1) or "")
for l in dangling_links[pkg]:
found = False
bb.debug(1, "%s contains dangling link %s" % (pkg, l))
- for p in packages.split():
+ for p in package_list:
for f in pkg_files[p]:
if f == l:
found = True
@@ -404,7 +408,7 @@ python populate_packages () {
data_file = os.path.join(workdir, "install", pn + ".package")
f = open(data_file, 'w')
f.write("PACKAGES: %s\n" % packages)
- for pkg in packages.split():
+ for pkg in package_list:
write_if_exists(f, pkg, 'DESCRIPTION')
write_if_exists(f, pkg, 'RDEPENDS')
write_if_exists(f, pkg, 'RPROVIDES')