diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-10-01 22:03:43 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-10-02 11:40:54 +0100 |
commit | c4d857debf35c9aa98b6db5605365a900dea7370 (patch) | |
tree | c6f32a86589fcdcb50de27050e78f92660ffb344 /bitbake/lib/bb/utils.py | |
parent | 9a283519b2c9c11823a13e69ec133d97ea029e87 (diff) | |
download | ast2050-yocto-poky-c4d857debf35c9aa98b6db5605365a900dea7370.zip ast2050-yocto-poky-c4d857debf35c9aa98b6db5605365a900dea7370.tar.gz |
bitbake: utils: Add explode_dep_versions2 to replace explode_dep_versions
The API for explode_dep_versions is flawed since there can only be one version
constraint against any given dependency. This adds a new function with an API
without this limitation. explode_dep_versions() is maintained with a warning
printed when its used in a situation where information is lost.
This should allow a simple transition to the new API to fix the lost dependency
information.
join_deps() is updated to deal with data in either format.
(Bitbake rev: babeeded21827d8d3e7c7b785a62332ee9d45d4f)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r-- | bitbake/lib/bb/utils.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index a537338..cef0fdd 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py @@ -138,7 +138,7 @@ def explode_deps(s): #r[-1] += ' ' + ' '.join(j) return r -def explode_dep_versions(s): +def explode_dep_versions2(s): """ Take an RDEPENDS style string of format: "DEPEND1 (optional version) DEPEND2 (optional version) ..." @@ -188,9 +188,9 @@ def explode_dep_versions(s): lastver += " " if i: lastver += i - if lastdep in r and r[lastdep] and r[lastdep] != lastver: - raise ValueError("Error, item %s appeared in dependency string '%s' multiple times with different values. explode_dep_versions cannot cope with this." % (lastdep, s)) - r[lastdep] = lastcmp + " " + lastver + if lastdep not in r: + r[lastdep] = [] + r[lastdep].append(lastcmp + " " + lastver) continue #if not inversion: @@ -198,8 +198,19 @@ def explode_dep_versions(s): lastver = "" lastcmp = "" if not (i in r and r[i]): - r[lastdep] = None + r[lastdep] = [] + + return r +def explode_dep_versions(s): + r = explode_dep_versions2(s) + for d in r: + if not r[d]: + r[d] = None + continue + if len(r[d]) > 1: + bb.warn("explode_dep_versions(): Item %s appeared in dependency string '%s' multiple times with different values. explode_dep_versions cannot cope with this." % (d, s)) + r[d] = r[d][0] return r def join_deps(deps, commasep=True): @@ -209,7 +220,11 @@ def join_deps(deps, commasep=True): result = [] for dep in deps: if deps[dep]: - result.append(dep + " (" + deps[dep] + ")") + if isinstance(deps[dep], list): + for v in deps[dep]: + result.append(dep + " (" + v + ")") + else: + result.append(dep + " (" + deps[dep] + ")") else: result.append(dep) if commasep: |