aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-09-02 17:44:06 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-10-29 10:41:34 +0000
commit48755f1a4a663e7cc88be0d57ff2611771fe29cb (patch)
tree14cccbd9d28ef7b2c7670f575a90d902eaa26db4 /scripts
parent4ec1f8c0181b7f50214e64c39f0f69e991b49194 (diff)
downloadopenembedded-core-contrib-48755f1a4a663e7cc88be0d57ff2611771fe29cb.tar.gz
scripts/oe-pkgdata-util: add ability to search for a target path
Add ability to search for a target path in produced packages, in order to find which package provides a specific file. (From OE-Core rev: 0824f2f5cf4e05f82b6986ce6fb22fa1392b7776) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/oe-pkgdata-util36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 01fccd2db0f..2d896d03a96 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -186,6 +186,38 @@ def read_value(args, usage):
qvar = "%s_%s" % (var, mappedpkg)
print(readvar(revlink, qvar))
+def find_path(args, usage):
+ if len(args) < 2:
+ usage()
+ sys.exit(1)
+
+ pkgdata_dir = args[0]
+ targetpath = args[1]
+
+ if not os.path.exists(pkgdata_dir):
+ print('ERROR: Unable to find pkgdata directory %s' % pkgdata_dir)
+ sys.exit(1)
+
+ import ast
+ import fnmatch
+
+ for root, dirs, files in os.walk(os.path.join(pkgdata_dir, 'runtime')):
+ for fn in files:
+ pkgsplitname = '/packages-split/%s' % fn
+ with open(os.path.join(root,fn)) as f:
+ for line in f:
+ if line.startswith('FILES_INFO:'):
+ val = line.split(':', 1)[1].strip().replace('\\\'', '\'')
+ dictval = ast.literal_eval(val)
+ for parent, dirlist in dictval.items():
+ idx = parent.find(pkgsplitname)
+ if idx > -1:
+ parent = parent[idx+len(pkgsplitname):]
+ for basename in dirlist:
+ fullpth = os.path.join(parent, basename)
+ if fnmatch.fnmatchcase(fullpth, targetpath):
+ print("%s: %s" % (fn, fullpth))
+
def main():
parser = optparse.OptionParser(
@@ -195,6 +227,8 @@ Available commands:
glob <pkgdatadir> <pkglistfile> "<globs>"
expand one or more glob expressions over the packages listed in
pkglistfile (one package per line)
+ find-path <pkgdatadir> <path>
+ find the package providing the specified path (wildcards * ? allowed)
read-value <pkgdatadir> <value-name> "<pkgs>"
read the named value from the pkgdata files for the specified
packages''')
@@ -212,6 +246,8 @@ Available commands:
if args[0] == "glob":
glob(args[1:], parser.print_help)
+ elif args[0] == "find-path":
+ find_path(args[1:], parser.print_help)
elif args[0] == "read-value":
read_value(args[1:], parser.print_help)
else: