1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-08 03:20:47 +00:00

scripts: python3 fixes and new tool ksum

'ksum.py' generates a combined summary of vmlinux and module sizes for
a built kernel, as a quick tool for comparing the overall effects of
systemic tinification changes.  Execute from the base directory of the
kernel build you want to summarize.  Setting the 'verbose' flag will
display the sizes for each file included in the summary.

(From OE-Core rev: 016b19c2589582d7ec3c8cac9cfa75a1edc716fe)

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Tom Zanussi
2016-09-07 09:45:15 -05:00
committed by Richard Purdie
parent 9d0b36d9ff
commit 1cae998af9
2 changed files with 180 additions and 5 deletions
+12 -5
View File
@@ -41,7 +41,7 @@ def usage():
class Sizes:
def __init__(self, glob):
self.title = glob
p = Popen("size -t " + glob, shell=True, stdout=PIPE, stderr=PIPE)
p = Popen("size -t " + str(glob), shell=True, stdout=PIPE, stderr=PIPE)
output = p.communicate()[0].splitlines()
if len(output) > 2:
sizes = output[-1].split()[0:4]
@@ -62,18 +62,18 @@ class Report:
r = Report(filename, title)
path = os.path.dirname(filename)
p = Popen("ls " + path + "/*.o | grep -v built-in.o",
p = Popen("ls " + str(path) + "/*.o | grep -v built-in.o",
shell=True, stdout=PIPE, stderr=PIPE)
glob = ' '.join(p.communicate()[0].splitlines())
oreport = Report(glob, path + "/*.o")
oreport.sizes.title = path + "/*.o"
oreport = Report(glob, str(path) + "/*.o")
oreport.sizes.title = str(path) + "/*.o"
r.parts.append(oreport)
if subglob:
p = Popen("ls " + subglob, shell=True, stdout=PIPE, stderr=PIPE)
for f in p.communicate()[0].splitlines():
path = os.path.dirname(f)
r.parts.append(Report.create(f, path, path + "/*/built-in.o"))
r.parts.append(Report.create(f, path, str(path) + "/*/built-in.o"))
r.parts.sort(reverse=True)
for b in r.parts:
@@ -116,6 +116,13 @@ class Report:
self.deltas["data"], self.deltas["bss"]))
print("\n")
def __lt__(this, that):
if that is None:
return 1
if not isinstance(that, Report):
raise TypeError
return this.sizes.total < that.sizes.total
def __cmp__(this, that):
if that is None:
return 1