diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-10-18 14:52:10 +0100 |
---|---|---|
committer | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-10-28 17:08:07 +0000 |
commit | 4ab561ac3df105b4b6487271b6ccc29445518d52 (patch) | |
tree | f2dc0b80fdbb9f3692568c8b3726dbbbb862b5b1 /scripts/oe-pkgdata-util | |
parent | d923846d91ae307372f1e48483e86807feeeb09d (diff) | |
download | openembedded-core-4ab561ac3df105b4b6487271b6ccc29445518d52.tar.gz openembedded-core-4ab561ac3df105b4b6487271b6ccc29445518d52.tar.bz2 openembedded-core-4ab561ac3df105b4b6487271b6ccc29445518d52.zip |
scripts/oe-pkgdata-util: add ability to find a recipe from a target package
Add a "lookup-recipe" command to show which recipe produced a particular
package.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'scripts/oe-pkgdata-util')
-rwxr-xr-x | scripts/oe-pkgdata-util | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util index 08773e9b05..80cacc5b66 100755 --- a/scripts/oe-pkgdata-util +++ b/scripts/oe-pkgdata-util @@ -219,6 +219,38 @@ def lookup_pkg(args, usage): items.extend(mappings.get(pkg, [])) print '\n'.join(items) +def lookup_recipe(args, usage): + if len(args) < 2: + usage() + sys.exit(1) + + pkgdata_dir = args[0] + pkgs = args[1].split() + + if not os.path.exists(pkgdata_dir): + print('ERROR: Unable to find pkgdata directory %s' % pkgdata_dir) + sys.exit(1) + + mappings = defaultdict(list) + for pkg in pkgs: + pkgfile = os.path.join(pkgdata_dir, 'runtime-reverse', pkg) + if os.path.exists(pkgfile): + with open(pkgfile, 'r') as f: + for line in f: + fields = line.rstrip().split(': ') + if fields[0] == 'PN': + mappings[pkg].append(fields[1]) + break + if len(mappings) < len(pkgs): + missing = list(set(pkgs) - set(mappings.keys())) + sys.stderr.write("ERROR: the following packages could not be found: %s\n" % ', '.join(missing)) + sys.exit(1) + + items = [] + for pkg in pkgs: + items.extend(mappings.get(pkg, [])) + print '\n'.join(items) + def find_path(args, usage): if len(args) < 2: usage() @@ -263,6 +295,9 @@ Available commands: lookup-pkg <pkgdatadir> "<recipe-pkgs>" look up the specified recipe-space package name(s) to see what the final runtime package name is (e.g. eglibc becomes libc6) + lookup-recipe <pkgdatadir> "<pkgs>" + look up the specified package(s) to see which recipe they were + produced by find-path <pkgdatadir> <path> find the package providing the specified path (wildcards * ? allowed) read-value <pkgdatadir> <value-name> "<pkgs>" @@ -284,6 +319,8 @@ Available commands: glob(args[1:], parser.print_help) elif args[0] == "lookup-pkg": lookup_pkg(args[1:], parser.print_help) + elif args[0] == "lookup-recipe": + lookup_recipe(args[1:], parser.print_help) elif args[0] == "find-path": find_path(args[1:], parser.print_help) elif args[0] == "read-value": |