summaryrefslogtreecommitdiff
path: root/scripts/oe-pkgdata-util
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-07-24 17:18:28 +0100
committerPaul Eggleton <paul.eggleton@linux.intel.com>2013-10-28 17:08:07 +0000
commitd923846d91ae307372f1e48483e86807feeeb09d (patch)
treeeaf692f9d6be6a32de6dc5e3ffc1bb73a70b24a9 /scripts/oe-pkgdata-util
parent0824f2f5cf4e05f82b6986ce6fb22fa1392b7776 (diff)
downloadopenembedded-core-d923846d91ae307372f1e48483e86807feeeb09d.tar.gz
openembedded-core-d923846d91ae307372f1e48483e86807feeeb09d.tar.bz2
openembedded-core-d923846d91ae307372f1e48483e86807feeeb09d.zip
scripts/oe-pkgdata-util: add ability to look up runtime package names
Add a "lookup-pkg" command to oe-pkgdata-util that can be used to find the runtime name of a package (after e.g. Debian library package renaming). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'scripts/oe-pkgdata-util')
-rwxr-xr-xscripts/oe-pkgdata-util38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 2d896d03a9..08773e9b05 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -26,6 +26,7 @@ import os.path
import fnmatch
import re
import optparse
+from collections import defaultdict
def glob(args, usage):
@@ -186,6 +187,38 @@ def read_value(args, usage):
qvar = "%s_%s" % (var, mappedpkg)
print(readvar(revlink, qvar))
+def lookup_pkg(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', pkg)
+ if os.path.exists(pkgfile):
+ with open(pkgfile, 'r') as f:
+ for line in f:
+ fields = line.rstrip().split(': ')
+ if fields[0] == 'PKG_%s' % pkg:
+ 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()
@@ -227,6 +260,9 @@ Available commands:
glob <pkgdatadir> <pkglistfile> "<globs>"
expand one or more glob expressions over the packages listed in
pkglistfile (one package per line)
+ 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)
find-path <pkgdatadir> <path>
find the package providing the specified path (wildcards * ? allowed)
read-value <pkgdatadir> <value-name> "<pkgs>"
@@ -246,6 +282,8 @@ Available commands:
if args[0] == "glob":
glob(args[1:], parser.print_help)
+ elif args[0] == "lookup-pkg":
+ lookup_pkg(args[1:], parser.print_help)
elif args[0] == "find-path":
find_path(args[1:], parser.print_help)
elif args[0] == "read-value":