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:21:12 +0100 |
commit | babeeded21827d8d3e7c7b785a62332ee9d45d4f (patch) | |
tree | a96ec56988fb3bb8b7bbc22a991e01b59ad773d9 | |
parent | 39c1c12c58fadd854098cf14ebe92f4d307a36dd (diff) | |
download | bitbake-babeeded21827d8d3e7c7b785a62332ee9d45d4f.tar.gz |
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.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/utils.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py index a53733832..cef0fdd5b 100644 --- a/lib/bb/utils.py +++ b/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: |