summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmanda Brindle <amanda.r.brindle@intel.com>2018-01-18 15:18:27 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-01-22 10:39:09 +0000
commit76cbeffd2f260e1d55826f499ecedef15a47b1dc (patch)
treee96835c7f2bd6cee246acfc1dd345382d44347e6
parent5840ae6d136fa226de1f9cbc5d9f6f2ea22cecc7 (diff)
downloadpoky-76cbeffd2f260e1d55826f499ecedef15a47b1dc.tar.gz
oe-pkgdata-util: Refactor functions for consistency
Refactor functions lookup_recipe and package_info to be consistent with list_pkg_files. Print the appropriate information as soon as it's found, rather than storing it in a mappings variable and wait to print after searching all packages. (From OE-Core rev: 64d3ce83d5c48d479709b4c1355e23b3768493fb) Signed-off-by: Amanda Brindle <amanda.r.brindle@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/oe-pkgdata-util107
1 files changed, 48 insertions, 59 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index c6fba56c89..e4ccf30308 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -257,25 +257,22 @@ def lookup_recipe(args):
257 for pkgitem in args.pkg: 257 for pkgitem in args.pkg:
258 pkgs.extend(pkgitem.split()) 258 pkgs.extend(pkgitem.split())
259 259
260 mappings = defaultdict(list)
261 for pkg in pkgs: 260 for pkg in pkgs:
262 pkgfile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg) 261 pkgdatafile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
263 if os.path.exists(pkgfile): 262 if os.path.exists(pkgdatafile):
264 with open(pkgfile, 'r') as f: 263 with open(pkgdatafile, 'r') as f:
264 found = False
265 for line in f: 265 for line in f:
266 fields = line.rstrip().split(': ') 266 if line.startswith('PN'):
267 if fields[0] == 'PN': 267 print("\t%s" % line.split(':', 1)[1].strip())
268 mappings[pkg].append(fields[1]) 268 found = True
269 break 269 break
270 if len(mappings) < len(pkgs): 270 if not found:
271 missing = list(set(pkgs) - set(mappings.keys())) 271 logger.error("Unable to find PN entry in %s" % pkgdatafile)
272 logger.error("The following packages could not be found: %s" % ', '.join(missing)) 272 sys.exit(1)
273 sys.exit(1) 273 else:
274 274 logger.error("Unable to find any built runtime package named %s" % pkg)
275 items = [] 275 sys.exit(1)
276 for pkg in pkgs:
277 items.extend(mappings.get(pkg, []))
278 print('\n'.join(items))
279 276
280def package_info(args): 277def package_info(args):
281 # Handle both multiple arguments and multiple values within an arg (old syntax) 278 # Handle both multiple arguments and multiple values within an arg (old syntax)
@@ -293,51 +290,43 @@ def package_info(args):
293 logger.error("No packages specified") 290 logger.error("No packages specified")
294 sys.exit(1) 291 sys.exit(1)
295 292
296 mappings = defaultdict(lambda: defaultdict(str))
297 for pkg in packages: 293 for pkg in packages:
298 pkgfile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg) 294 pkgdatafile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
299 if os.path.exists(pkgfile): 295 if os.path.exists(pkgdatafile):
300 with open(pkgfile, 'r') as f: 296 with open(pkgdatafile, 'r') as f:
297 pkge = ''
298 pkgr = ''
299 pe = ''
300 pr = ''
301 for line in f: 301 for line in f:
302 fields = line.rstrip().split(': ') 302 if line.startswith('PKGV'):
303 if fields[0].endswith("_" + pkg): 303 pkg_version = line.split(':', 1)[1].strip()
304 k = fields[0][:len(fields[0]) - len(pkg) - 1] 304 elif line.startswith('PKGE'):
305 else: 305 pkge = line.split(':', 1)[1].strip()
306 k = fields[0] 306 elif line.startswith('PKGR'):
307 v = fields[1] if len(fields) == 2 else "" 307 pkgr = line.split(':', 1)[1].strip()
308 mappings[pkg][k] = v 308 elif line.startswith('PN'):
309 309 recipe = line.split(':', 1)[1].strip()
310 if len(mappings) < len(packages): 310 elif line.startswith('PV'):
311 missing = list(set(packages) - set(mappings.keys())) 311 recipe_version = line.split(':', 1)[1].strip()
312 logger.error("The following packages could not be found: %s" % 312 elif line.startswith('PE'):
313 ', '.join(missing)) 313 pe = line.split(':', 1)[1].strip()
314 sys.exit(1) 314 elif line.startswith('PR'):
315 315 pr = line.split(':', 1)[1].strip()
316 items = [] 316 elif line.startswith('PKGSIZE'):
317 for pkg in packages: 317 pkg_size = line.split(':', 1)[1].strip()
318 pkg_version = mappings[pkg]['PKGV'] 318 if pkge:
319 if mappings[pkg]['PKGE']: 319 pkg_version = pkge + ":" + pkg_version
320 pkg_version = mappings[pkg]['PKGE'] + ":" + pkg_version 320 if pkgr:
321 if mappings[pkg]['PKGR']: 321 pkg_version = pkg_version + "-" + pkgr
322 pkg_version = pkg_version + "-" + mappings[pkg]['PKGR'] 322 if pe:
323 recipe = mappings[pkg]['PN'] 323 recipe_version = pe + ":" + recipe_version
324 recipe_version = mappings[pkg]['PV'] 324 if pr:
325 if mappings[pkg]['PE']: 325 recipe_version = recipe_version + "-" + pr
326 recipe_version = mappings[pkg]['PE'] + ":" + recipe_version 326 print("%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size))
327 if mappings[pkg]['PR']: 327 else:
328 recipe_version = recipe_version + "-" + mappings[pkg]['PR'] 328 logger.error("Unable to find any built runtime package named %s" % pkg)
329 pkg_size = mappings[pkg]['PKGSIZE'] 329 sys.exit(1)
330
331 line = "%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size)
332
333 if args.extra:
334 for var in args.extra:
335 val = mappings[pkg][var].strip()
336 val = re.sub(r'\s+', ' ', val)
337 line += ' "%s"' % val
338
339 items.append(line)
340 print('\n'.join(items))
341 330
342def get_recipe_pkgs(pkgdata_dir, recipe, unpackaged): 331def get_recipe_pkgs(pkgdata_dir, recipe, unpackaged):
343 recipedatafile = os.path.join(pkgdata_dir, recipe) 332 recipedatafile = os.path.join(pkgdata_dir, recipe)