From a35abe31dc23916fd06afdb3a5e22a81ef3df579 Mon Sep 17 00:00:00 2001 From: Jean-Marie LEMETAYER Date: Fri, 17 May 2019 17:14:07 +0200 Subject: 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 Signed-off-by: Richard Purdie --- bitbake/lib/bb/fetch2/npm.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'bitbake/lib') 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): Parse the output of npm view --json; the last JSON result is assumed to be the one that we're interested in. ''' - pdata = None - outdeps = {} - datalines = [] - bracelevel = 0 - for line in output.splitlines(): - if bracelevel: - datalines.append(line) - elif '{' in line: - datalines = [] - datalines.append(line) - bracelevel = bracelevel + line.count('{') - line.count('}') - if datalines: - pdata = json.loads('\n'.join(datalines)) - return pdata + pdata = json.loads(output); + try: + return pdata[-1] + except: + return pdata def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None): if fetchedlist is None: -- cgit v1.2.3-54-g00ecf