diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2015-02-11 13:43:18 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-02-14 08:41:01 +0000 |
commit | cfc12dfc34bdea02af29dda358b7af8a355fe0a4 (patch) | |
tree | e1c68ed48a95aebd99ad0795707e9380e646b301 /scripts/oe-pkgdata-util | |
parent | 8d13d187b52039c2c663f7a780e89cf5e9c9e26d (diff) | |
download | poky-cfc12dfc34bdea02af29dda358b7af8a355fe0a4.tar.gz |
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>
Diffstat (limited to 'scripts/oe-pkgdata-util')
-rwxr-xr-x | scripts/oe-pkgdata-util | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util index 2830f48c73..5a9f89b31b 100755 --- a/scripts/oe-pkgdata-util +++ b/scripts/oe-pkgdata-util | |||
@@ -338,6 +338,57 @@ def list_pkgs(args): | |||
338 | logger.error("No packages found") | 338 | logger.error("No packages found") |
339 | sys.exit(1) | 339 | sys.exit(1) |
340 | 340 | ||
341 | def list_pkg_files(args): | ||
342 | import json | ||
343 | |||
344 | if args.recipe: | ||
345 | if args.pkg: | ||
346 | logger.error("list-pkg-files: If -p/--recipe is specified then a package name cannot be specified") | ||
347 | sys.exit(1) | ||
348 | recipepkglist = get_recipe_pkgs(args.pkgdata_dir, args.recipe, args.unpackaged) | ||
349 | if args.runtime: | ||
350 | pkglist = [] | ||
351 | runtime_pkgs = lookup_pkglist(recipepkglist, args.pkgdata_dir, False) | ||
352 | for rtpkgs in runtime_pkgs.values(): | ||
353 | pkglist.extend(rtpkgs) | ||
354 | else: | ||
355 | pkglist = recipepkglist | ||
356 | else: | ||
357 | if not args.pkg: | ||
358 | logger.error("list-pkg-files: If -p/--recipe is not specified then at least one package name must be specified") | ||
359 | sys.exit(1) | ||
360 | pkglist = args.pkg | ||
361 | |||
362 | for pkg in pkglist: | ||
363 | print("%s:" % pkg) | ||
364 | if args.runtime: | ||
365 | pkgdatafile = os.path.join(args.pkgdata_dir, "runtime-reverse", pkg) | ||
366 | if not os.path.exists(pkgdatafile): | ||
367 | if args.recipe: | ||
368 | # This package was empty and thus never packaged, ignore | ||
369 | continue | ||
370 | logger.error("Unable to find any built runtime package named %s" % pkg) | ||
371 | sys.exit(1) | ||
372 | else: | ||
373 | pkgdatafile = os.path.join(args.pkgdata_dir, "runtime", pkg) | ||
374 | if not os.path.exists(pkgdatafile): | ||
375 | logger.error("Unable to find any built recipe-space package named %s" % pkg) | ||
376 | sys.exit(1) | ||
377 | |||
378 | with open(pkgdatafile, 'r') as f: | ||
379 | found = False | ||
380 | for line in f: | ||
381 | if line.startswith('FILES_INFO:'): | ||
382 | found = True | ||
383 | val = line.split(':', 1)[1].strip() | ||
384 | dictval = json.loads(val) | ||
385 | for fullpth in sorted(dictval): | ||
386 | print("\t%s" % fullpth) | ||
387 | break | ||
388 | if not found: | ||
389 | logger.error("Unable to find FILES_INFO entry in %s" % pkgdatafile) | ||
390 | sys.exit(1) | ||
391 | |||
341 | def find_path(args): | 392 | def find_path(args): |
342 | import json | 393 | import json |
343 | 394 | ||
@@ -382,6 +433,15 @@ def main(): | |||
382 | parser_list_pkgs.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages', action='store_true') | 433 | parser_list_pkgs.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages', action='store_true') |
383 | parser_list_pkgs.set_defaults(func=list_pkgs) | 434 | parser_list_pkgs.set_defaults(func=list_pkgs) |
384 | 435 | ||
436 | parser_list_pkg_files = subparsers.add_parser('list-pkg-files', | ||
437 | help='List files within a package', | ||
438 | description='Lists files included in one or more packages') | ||
439 | parser_list_pkg_files.add_argument('pkg', nargs='*', help='Package name to report on (if -p/--recipe is not specified)') | ||
440 | 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') | ||
441 | parser_list_pkg_files.add_argument('-p', '--recipe', help='Report on all packages produced by the specified recipe') | ||
442 | parser_list_pkg_files.add_argument('-u', '--unpackaged', help='Include unpackaged (i.e. empty) packages (only useful with -p/--recipe)', action='store_true') | ||
443 | parser_list_pkg_files.set_defaults(func=list_pkg_files) | ||
444 | |||
385 | parser_lookup_recipe = subparsers.add_parser('lookup-recipe', | 445 | parser_lookup_recipe = subparsers.add_parser('lookup-recipe', |
386 | help='Find recipe producing one or more packages', | 446 | help='Find recipe producing one or more packages', |
387 | description='Looks up the specified runtime package(s) to see which recipe they were produced by') | 447 | description='Looks up the specified runtime package(s) to see which recipe they were produced by') |