summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorJean-Marie LEMETAYER <jean-marie.lemetayer@savoirfairelinux.com>2019-05-17 17:14:07 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-05-21 12:56:34 +0100
commita35abe31dc23916fd06afdb3a5e22a81ef3df579 (patch)
treea8cb43a4f80b1a5361de360f97f5507f7583ea70 /bitbake
parenta1c1f3f7c583267ef9ccc9b24c84568ed0cb47f6 (diff)
downloadpoky-a35abe31dc23916fd06afdb3a5e22a81ef3df579.tar.gz
bitbake: bitbake: fetch2/npm: fix npw view parsing
Fixes [YOCTO #13344] When parsing manually the 'npm view --json' ouput, an extra closing brackets in a JSON string can leads the fetcher to fail with a JSONDecodeError exception. This commit use the JSON parser to extract: - The last object in the returned array if there are multiple results. - The returned object if there is only one result. (Bitbake rev: 3d319c79981811d3cfd4732885057db4fd5afcc2) Signed-off-by: Jean-Marie LEMETAYER <jean-marie.lemetayer@savoirfairelinux.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/npm.py19
1 files changed, 5 insertions, 14 deletions
diff --git a/bitbake/lib/bb/fetch2/npm.py b/bitbake/lib/bb/fetch2/npm.py
index f08bdee739..4427b1bb87 100644
--- a/bitbake/lib/bb/fetch2/npm.py
+++ b/bitbake/lib/bb/fetch2/npm.py
@@ -151,20 +151,11 @@ class Npm(FetchMethod):
151 Parse the output of npm view --json; the last JSON result 151 Parse the output of npm view --json; the last JSON result
152 is assumed to be the one that we're interested in. 152 is assumed to be the one that we're interested in.
153 ''' 153 '''
154 pdata = None 154 pdata = json.loads(output);
155 outdeps = {} 155 try:
156 datalines = [] 156 return pdata[-1]
157 bracelevel = 0 157 except:
158 for line in output.splitlines(): 158 return pdata
159 if bracelevel:
160 datalines.append(line)
161 elif '{' in line:
162 datalines = []
163 datalines.append(line)
164 bracelevel = bracelevel + line.count('{') - line.count('}')
165 if datalines:
166 pdata = json.loads('\n'.join(datalines))
167 return pdata
168 159
169 def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None): 160 def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None):
170 if fetchedlist is None: 161 if fetchedlist is None: