1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-04 14:09:47 +00:00

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>
This commit is contained in:
Amanda Brindle
2018-01-18 15:18:27 -08:00
committed by Richard Purdie
parent 5840ae6d13
commit 76cbeffd2f
+48 -59
View File
@@ -257,25 +257,22 @@ def lookup_recipe(args):
for pkgitem in args.pkg: for pkgitem in args.pkg:
pkgs.extend(pkgitem.split()) pkgs.extend(pkgitem.split())
mappings = defaultdict(list)
for pkg in pkgs: for pkg in pkgs:
pkgfile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg) pkgdatafile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
if os.path.exists(pkgfile): if os.path.exists(pkgdatafile):
with open(pkgfile, 'r') as f: with open(pkgdatafile, 'r') as f:
found = False
for line in f: for line in f:
fields = line.rstrip().split(': ') if line.startswith('PN'):
if fields[0] == 'PN': print("\t%s" % line.split(':', 1)[1].strip())
mappings[pkg].append(fields[1]) found = True
break break
if len(mappings) < len(pkgs): if not found:
missing = list(set(pkgs) - set(mappings.keys())) logger.error("Unable to find PN entry in %s" % pkgdatafile)
logger.error("The following packages could not be found: %s" % ', '.join(missing)) sys.exit(1)
sys.exit(1) else:
logger.error("Unable to find any built runtime package named %s" % pkg)
items = [] sys.exit(1)
for pkg in pkgs:
items.extend(mappings.get(pkg, []))
print('\n'.join(items))
def package_info(args): def package_info(args):
# Handle both multiple arguments and multiple values within an arg (old syntax) # Handle both multiple arguments and multiple values within an arg (old syntax)
@@ -293,51 +290,43 @@ def package_info(args):
logger.error("No packages specified") logger.error("No packages specified")
sys.exit(1) sys.exit(1)
mappings = defaultdict(lambda: defaultdict(str))
for pkg in packages: for pkg in packages:
pkgfile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg) pkgdatafile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
if os.path.exists(pkgfile): if os.path.exists(pkgdatafile):
with open(pkgfile, 'r') as f: with open(pkgdatafile, 'r') as f:
pkge = ''
pkgr = ''
pe = ''
pr = ''
for line in f: for line in f:
fields = line.rstrip().split(': ') if line.startswith('PKGV'):
if fields[0].endswith("_" + pkg): pkg_version = line.split(':', 1)[1].strip()
k = fields[0][:len(fields[0]) - len(pkg) - 1] elif line.startswith('PKGE'):
else: pkge = line.split(':', 1)[1].strip()
k = fields[0] elif line.startswith('PKGR'):
v = fields[1] if len(fields) == 2 else "" pkgr = line.split(':', 1)[1].strip()
mappings[pkg][k] = v elif line.startswith('PN'):
recipe = line.split(':', 1)[1].strip()
if len(mappings) < len(packages): elif line.startswith('PV'):
missing = list(set(packages) - set(mappings.keys())) recipe_version = line.split(':', 1)[1].strip()
logger.error("The following packages could not be found: %s" % elif line.startswith('PE'):
', '.join(missing)) pe = line.split(':', 1)[1].strip()
sys.exit(1) elif line.startswith('PR'):
pr = line.split(':', 1)[1].strip()
items = [] elif line.startswith('PKGSIZE'):
for pkg in packages: pkg_size = line.split(':', 1)[1].strip()
pkg_version = mappings[pkg]['PKGV'] if pkge:
if mappings[pkg]['PKGE']: pkg_version = pkge + ":" + pkg_version
pkg_version = mappings[pkg]['PKGE'] + ":" + pkg_version if pkgr:
if mappings[pkg]['PKGR']: pkg_version = pkg_version + "-" + pkgr
pkg_version = pkg_version + "-" + mappings[pkg]['PKGR'] if pe:
recipe = mappings[pkg]['PN'] recipe_version = pe + ":" + recipe_version
recipe_version = mappings[pkg]['PV'] if pr:
if mappings[pkg]['PE']: recipe_version = recipe_version + "-" + pr
recipe_version = mappings[pkg]['PE'] + ":" + recipe_version print("%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size))
if mappings[pkg]['PR']: else:
recipe_version = recipe_version + "-" + mappings[pkg]['PR'] logger.error("Unable to find any built runtime package named %s" % pkg)
pkg_size = mappings[pkg]['PKGSIZE'] sys.exit(1)
line = "%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size)
if args.extra:
for var in args.extra:
val = mappings[pkg][var].strip()
val = re.sub(r'\s+', ' ', val)
line += ' "%s"' % val
items.append(line)
print('\n'.join(items))
def get_recipe_pkgs(pkgdata_dir, recipe, unpackaged): def get_recipe_pkgs(pkgdata_dir, recipe, unpackaged):
recipedatafile = os.path.join(pkgdata_dir, recipe) recipedatafile = os.path.join(pkgdata_dir, recipe)