oe-pkgdata-util: add list-pkg-files subcommand
Adds a subcommand to list the files in a package, or list the files in all packages for a recipe. (From OE-Core rev: 380218d7b963e8931c72596852b1ed2a7f4df61d) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8d13d187b5
commit
cfc12dfc34
|
@ -338,6 +338,57 @@ def list_pkgs(args):
|
||||||
logger.error("No packages found")
|
logger.error("No packages found")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def list_pkg_files(args):
|
||||||
|
import json
|
||||||
|
|
||||||
|
if args.recipe:
|
||||||
|
if args.pkg:
|
||||||
|
logger.error("list-pkg-files: If -p/--recipe is specified then a package name cannot be specified")
|
||||||
|
sys.exit(1)
|
||||||
|
recipepkglist = get_recipe_pkgs(args.pkgdata_dir, args.recipe, args.unpackaged)
|
||||||
|
if args.runtime:
|
||||||
|
pkglist = []
|
||||||
|
runtime_pkgs = lookup_pkglist(recipepkglist, args.pkgdata_dir, False)
|
||||||
|
for rtpkgs in runtime_pkgs.values():
|
||||||
|
pkglist.extend(rtpkgs)
|
||||||
|
else:
|
||||||
|
pkglist = recipepkglist
|
||||||
|
else:
|
||||||
|
if not args.pkg:
|
||||||
|
logger.error("list-pkg-files: If -p/--recipe is not specified then at least one package name must be specified")
|
||||||
|
sys.exit(1)
|
||||||
|
pkglist = args.pkg
|
||||||
|
|
||||||
|
for pkg in pkglist:
|
||||||
|
print("%s:" % pkg)
|
||||||
|
if args.runtime:
|
||||||
|
pkgdatafile = os.path.join(args.pkgdata_dir, "runtime-reverse", pkg)
|
||||||
|
if not os.path.exists(pkgdatafile):
|
||||||
|
if args.recipe:
|
||||||
|
# This package was empty and thus never packaged, ignore
|
||||||
|
continue
|
||||||
|
logger.error("Unable to find any built runtime package named %s" % pkg)
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
pkgdatafile = os.path.join(args.pkgdata_dir, "runtime", pkg)
|
||||||
|
if not os.path.exists(pkgdatafile):
|
||||||
|
logger.error("Unable to find any built recipe-space package named %s" % pkg)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with open(pkgdatafile, 'r') as f:
|
||||||
|
found = False
|
||||||
|
for line in f:
|
||||||
|
if line.startswith('FILES_INFO:'):
|
||||||
|
found = True
|
||||||
|
val = line.split(':', 1)[1].strip()
|
||||||
|
dictval = json.loads(val)
|
||||||
|
for fullpth in sorted(dictval):
|
||||||
|
print("\t%s" % fullpth)
|
||||||
|
break
|
||||||
|
if not found:
|
||||||
|
logger.error("Unable to find FILES_INFO entry in %s" % pkgdatafile)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
def find_path(args):
|
def find_path(args):
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
@ -382,6 +433,15 @@ def main():
|
||||||
parser_list_pkgs.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages', action='store_true')
|
parser_list_pkgs.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages', action='store_true')
|
||||||
parser_list_pkgs.set_defaults(func=list_pkgs)
|
parser_list_pkgs.set_defaults(func=list_pkgs)
|
||||||
|
|
||||||
|
parser_list_pkg_files = subparsers.add_parser('list-pkg-files',
|
||||||
|
help='List files within a package',
|
||||||
|
description='Lists files included in one or more packages')
|
||||||
|
parser_list_pkg_files.add_argument('pkg', nargs='*', help='Package name to report on (if -p/--recipe is not specified)')
|
||||||
|
parser_list_pkg_files.add_argument('-r', '--runtime', help='Specified package(s) are runtime package names instead of recipe-space package names', action='store_true')
|
||||||
|
parser_list_pkg_files.add_argument('-p', '--recipe', help='Report on all packages produced by the specified recipe')
|
||||||
|
parser_list_pkg_files.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages (only useful with -p/--recipe)', action='store_true')
|
||||||
|
parser_list_pkg_files.set_defaults(func=list_pkg_files)
|
||||||
|
|
||||||
parser_lookup_recipe = subparsers.add_parser('lookup-recipe',
|
parser_lookup_recipe = subparsers.add_parser('lookup-recipe',
|
||||||
help='Find recipe producing one or more packages',
|
help='Find recipe producing one or more packages',
|
||||||
description='Looks up the specified runtime package(s) to see which recipe they were produced by')
|
description='Looks up the specified runtime package(s) to see which recipe they were produced by')
|
||||||
|
|
Loading…
Reference in New Issue