mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
buildhistory: Add output file listing package information
Currently, buildhistory does not produce a single file combining relevant information of installed packages. Produce an output file "installed-package-info.txt" listing a package's runtime name, buildtime name, its recipe, version, and size to avoid having to look up each package externally. Leave the existing package list files as-is for backwards compatibility. In order to support this efficiently, extend oe-pkgdata-util to accept multiple keys for its read-value argument. (From OE-Core rev: 1e18b514bf1f960d324a21db608c8e8e5af007ef) Signed-off-by: Andres Beltran <abeltran@linux.microsoft.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
51a174f501
commit
37e0565c11
|
@ -499,6 +499,11 @@ buildhistory_get_installed() {
|
|||
cat $1/installed-package-sizes.tmp | awk '{print $2 "\tKiB\t" $1}' | sort -n -r > $1/installed-package-sizes.txt
|
||||
rm $1/installed-package-sizes.tmp
|
||||
|
||||
# Produce package info: runtime_name, buildtime_name, recipe, version, size
|
||||
oe-pkgdata-util -p ${PKGDATA_DIR} read-value "PACKAGE,PN,PV,PKGSIZE" -n -f $pkgcache > $1/installed-package-info.tmp
|
||||
cat $1/installed-package-info.tmp | sort -n -r -k 5 > $1/installed-package-info.txt
|
||||
rm $1/installed-package-info.tmp
|
||||
|
||||
# We're now done with the cache, delete it
|
||||
rm $pkgcache
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ def read_value(args):
|
|||
val = line.split(': ', 1)[1].rstrip()
|
||||
return val
|
||||
|
||||
logger.debug("read-value('%s', '%s' '%s')" % (args.pkgdata_dir, args.valuename, packages))
|
||||
logger.debug("read-value('%s', '%s' '%s')" % (args.pkgdata_dir, args.valuenames, packages))
|
||||
for package in packages:
|
||||
pkg_split = package.split('_')
|
||||
pkg_name = pkg_split[0]
|
||||
|
@ -180,20 +180,29 @@ def read_value(args):
|
|||
logger.debug(revlink)
|
||||
if os.path.exists(revlink):
|
||||
mappedpkg = os.path.basename(os.readlink(revlink))
|
||||
qvar = args.valuename
|
||||
value = readvar(revlink, qvar, mappedpkg)
|
||||
if qvar == "PKGSIZE":
|
||||
# PKGSIZE is now in bytes, but we we want it in KB
|
||||
pkgsize = (int(value) + 1024 // 2) // 1024
|
||||
value = "%d" % pkgsize
|
||||
if args.unescape:
|
||||
import codecs
|
||||
# escape_decode() unescapes backslash encodings in byte streams
|
||||
value = codecs.escape_decode(bytes(value, "utf-8"))[0].decode("utf-8")
|
||||
qvars = args.valuenames
|
||||
val_names = qvars.split(',')
|
||||
values = []
|
||||
for qvar in val_names:
|
||||
if qvar == "PACKAGE":
|
||||
value = mappedpkg
|
||||
else:
|
||||
value = readvar(revlink, qvar, mappedpkg)
|
||||
if qvar == "PKGSIZE":
|
||||
# PKGSIZE is now in bytes, but we we want it in KB
|
||||
pkgsize = (int(value) + 1024 // 2) // 1024
|
||||
value = "%d" % pkgsize
|
||||
if args.unescape:
|
||||
import codecs
|
||||
# escape_decode() unescapes backslash encodings in byte streams
|
||||
value = codecs.escape_decode(bytes(value, "utf-8"))[0].decode("utf-8")
|
||||
values.append(value)
|
||||
|
||||
values_str = ' '.join(values)
|
||||
if args.prefix_name:
|
||||
print('%s %s' % (pkg_name, value))
|
||||
print('%s %s' % (pkg_name, values_str))
|
||||
else:
|
||||
print(value)
|
||||
print(values_str)
|
||||
else:
|
||||
logger.debug("revlink %s does not exist", revlink)
|
||||
|
||||
|
@ -570,7 +579,7 @@ def main():
|
|||
parser_read_value = subparsers.add_parser('read-value',
|
||||
help='Read any pkgdata value for one or more packages',
|
||||
description='Reads the named value from the pkgdata files for the specified packages')
|
||||
parser_read_value.add_argument('valuename', help='Name of the value to look up')
|
||||
parser_read_value.add_argument('valuenames', help='Name of the value/s to look up (separated by commas, no spaces)')
|
||||
parser_read_value.add_argument('pkg', nargs='*', help='Runtime package name to look up')
|
||||
parser_read_value.add_argument('-f', '--file', help='Read package names from the specified file (one per line, first field only)')
|
||||
parser_read_value.add_argument('-n', '--prefix-name', help='Prefix output with package name', action='store_true')
|
||||
|
|
Loading…
Reference in New Issue
Block a user