Add "make bloatcheck" to run Matt Mackall's bloat-o-meter. Copy an old busybox_unstripped to busybox_old, build a new version, and "make bloatcheck" to see a detailed breakdown of the size difference.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -132,6 +132,8 @@ help: | |
| @echo ' uninstall' | |
| @echo | |
| @echo 'Development:' | |
| + | @echo ' bloatcheck - show size difference between busybox_unstripped' |
| + | @echo ' and busybox_old |
| @echo ' check - run the test suite for all applets' | |
| @echo ' checkhelp - check for missing help-entries in Config.in' | |
| @echo ' randconfig - generate a random configuration' | |
| @@ -358,6 +360,9 @@ checkhelp: | |
| .PHONY: sizes | |
| sizes: busybox_unstripped | |
| $(NM) --size-sort $(<) | |
| + | .PHONY: bloatcheck |
| + | bloatcheck: busybox_old busybox_unstripped |
| + | @scripts/bloat-o-meter busybox_old busybox_unstripped |
| .PHONY: objsizes | |
| objsizes: busybox_unstripped | |
| @@ -0,0 +1,60 @@ | |
| + | #!/usr/bin/python |
| + | # |
| + | # Copyright 2004 Matt Mackall <[email protected]> |
| + | # |
| + | # inspired by perl Bloat-O-Meter (c) 1997 by Andi Kleen |
| + | # |
| + | # This software may be used and distributed according to the terms |
| + | # of the GNU General Public License, incorporated herein by reference. |
| + | |
| + | import sys, os, re |
| + | |
| + | if len(sys.argv) != 3: |
| + | sys.stderr.write("usage: %s file1 file2\n" % sys.argv[0]) |
| + | sys.exit(-1) |
| + | |
| + | def getsizes(file): |
| + | sym = {} |
| + | for l in os.popen("nm --size-sort " + file).readlines(): |
| + | size, type, name = l[:-1].split() |
| + | if type in "tTdDbB": |
| + | if name.find(".") != -1: name = "static." + name.split(".")[0] |
| + | if name in sym: sym[name] += int(size, 16) |
| + | else :sym[name] = int(size, 16) |
| + | return sym |
| + | |
| + | old = getsizes(sys.argv[1]) |
| + | new = getsizes(sys.argv[2]) |
| + | grow, shrink, add, remove, up, down = 0, 0, 0, 0, 0, 0 |
| + | delta, common = [], {} |
| + | |
| + | for a in old: |
| + | if a in new: |
| + | common[a] = 1 |
| + | |
| + | for name in old: |
| + | if name not in common: |
| + | remove += 1 |
| + | down += old[name] |
| + | delta.append((-old[name], name)) |
| + | |
| + | for name in new: |
| + | if name not in common: |
| + | add += 1 |
| + | up += new[name] |
| + | delta.append((new[name], name)) |
| + | |
| + | for name in common: |
| + | d = new.get(name, 0) - old.get(name, 0) |
| + | if d>0: grow, up = grow+1, up+d |
| + | if d<0: shrink, down = shrink+1, down-d |
| + | delta.append((d, name)) |
| + | |
| + | delta.sort() |
| + | delta.reverse() |
| + | |
| + | print "add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \ |
| + | (add, remove, grow, shrink, up, -down, up-down) |
| + | print "%-40s %7s %7s %+7s" % ("function", "old", "new", "delta") |
| + | for d, n in delta: |
| + | if d: print "%-40s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d) |