summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-01 22:03:43 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-02 11:40:54 +0100
commitc4d857debf35c9aa98b6db5605365a900dea7370 (patch)
treec6f32a86589fcdcb50de27050e78f92660ffb344 /bitbake
parent9a283519b2c9c11823a13e69ec133d97ea029e87 (diff)
downloadpoky-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')
-rw-r--r--bitbake/lib/bb/utils.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index a537338326..cef0fdd5b8 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -138,7 +138,7 @@ def explode_deps(s):
138 #r[-1] += ' ' + ' '.join(j) 138 #r[-1] += ' ' + ' '.join(j)
139 return r 139 return r
140 140
141def explode_dep_versions(s): 141def explode_dep_versions2(s):
142 """ 142 """
143 Take an RDEPENDS style string of format: 143 Take an RDEPENDS style string of format:
144 "DEPEND1 (optional version) DEPEND2 (optional version) ..." 144 "DEPEND1 (optional version) DEPEND2 (optional version) ..."
@@ -188,9 +188,9 @@ def explode_dep_versions(s):
188 lastver += " " 188 lastver += " "
189 if i: 189 if i:
190 lastver += i 190 lastver += i
191 if lastdep in r and r[lastdep] and r[lastdep] != lastver: 191 if lastdep not in r:
192 raise ValueError("Error, item %s appeared in dependency string '%s' multiple times with different values. explode_dep_versions cannot cope with this." % (lastdep, s)) 192 r[lastdep] = []
193 r[lastdep] = lastcmp + " " + lastver 193 r[lastdep].append(lastcmp + " " + lastver)
194 continue 194 continue
195 195
196 #if not inversion: 196 #if not inversion:
@@ -198,8 +198,19 @@ def explode_dep_versions(s):
198 lastver = "" 198 lastver = ""
199 lastcmp = "" 199 lastcmp = ""
200 if not (i in r and r[i]): 200 if not (i in r and r[i]):
201 r[lastdep] = None 201 r[lastdep] = []
202
203 return r
202 204
205def explode_dep_versions(s):
206 r = explode_dep_versions2(s)
207 for d in r:
208 if not r[d]:
209 r[d] = None
210 continue
211 if len(r[d]) > 1:
212 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))
213 r[d] = r[d][0]
203 return r 214 return r
204 215
205def join_deps(deps, commasep=True): 216def join_deps(deps, commasep=True):
@@ -209,7 +220,11 @@ def join_deps(deps, commasep=True):
209 result = [] 220 result = []
210 for dep in deps: 221 for dep in deps:
211 if deps[dep]: 222 if deps[dep]:
212 result.append(dep + " (" + deps[dep] + ")") 223 if isinstance(deps[dep], list):
224 for v in deps[dep]:
225 result.append(dep + " (" + v + ")")
226 else:
227 result.append(dep + " (" + deps[dep] + ")")
213 else: 228 else:
214 result.append(dep) 229 result.append(dep)
215 if commasep: 230 if commasep: