aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/oe-pkgdata-util
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-12-02 18:50:44 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-03 12:44:47 +0000
commitca86603607a69a17cc5540d69de0e242b33382d3 (patch)
treec1a2e0fa7d522098d677b164edaeae477f3d61e9 /scripts/oe-pkgdata-util
parentceba66859f87904066e67504a53fc8b07f4b1111 (diff)
downloadopenembedded-core-contrib-ca86603607a69a17cc5540d69de0e242b33382d3.tar.gz
classes/package: fix FILES_INFO serialisation in pkgdata
The FILES_INFO entry in each pkgdata file stores the list of files for each package. Make the following improvements to how this is stored: * Store paths as they would be seen on the target rather than erroneously including the full path to PKGDEST (which is specific to the build host the package was built on) * For simplicity when loading the data, store complete paths for each entry instead of trying to break off the first part and use it as the dict key * Record sizes for each file (as needed by Toaster) * Serialise the value explicitly using json rather than just passing it through str(). Fixes [YOCTO #5443]. 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-xscripts/oe-pkgdata-util19
1 files changed, 7 insertions, 12 deletions
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 17e946e1e4..03c8f95305 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -262,25 +262,20 @@ def find_path(args, usage, debug=False):
print('ERROR: Unable to find pkgdata directory %s' % pkgdata_dir)
sys.exit(1)
- import ast
+ import json
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))
+ val = line.split(':', 1)[1].strip()
+ dictval = json.loads(val)
+ for fullpth in dictval.keys():
+ if fnmatch.fnmatchcase(fullpth, targetpath):
+ print("%s: %s" % (fn, fullpth))
+ break
def main():