[Toybox] request for comments: pybloat.py
Rob Landley
rob at landley.net
Wed Feb 15 04:28:11 PST 2012
On 02/15/2012 12:11 AM, Elie De Brauwer wrote:
> Hello all,
>
> Since Rob mentioned earlier he wanted to replace the GPL parts of the
> bulid process by non-GPL counterparts, one of them being the bloat-o-meter.
> In attachment you find a bloat-o-meter replacement called pybloat, not
> in the form of a patch, but rather in the form of something to play
> with/shoot at, hence comments are welcome.
>
> Whilst the bloat-o-meter is a wrapper around nm --sort-size filtering
> out symbols from the BSS, data and text section and uses readelf to
> obtain the .rodata size. This first version bases itself fully on the
> output of nm (which will show explicit deltas in the .ro section instead
> of just .rodata).
>
> I give this some quick tests on toybox itself and so far it seems to
> behave.
>
> But feedback/wisdom/comments are welcomed.
Very nice.
I had vaguely planned to rewrite this as a shell script. Python's a
nice language, but the main build only needs shell and C, and having
extra dependencies (and requiring developers working on the project to
know _three_ languages to bang on all of it) seems unnecessary overhead.
That said, this is a debug script: entirely optional and not a build
dependency per se. And the existing one was already in Python...
I definitely want to remove scripts/config2help.py and am halfway done
with a C implementation of that already. (Which may also form the basis
for a non-gpl rewrite of menuconfig, not sure yet. On the menuconfig
side, the need for ncurses as part of the build is another "ouch"
moment. For a while there the kernel required ncurses for "make
defconfig" and I had to chop that out, but I complained and they fixed
it upstream.)
I've actually been shipping the allyesconfig generated/help.h so people
can build on systems that haven't got python installed. (I've natively
built and installed python in my aboriginal linux system images before,
the gentoo-bootstrap build control image actually does that, but if
you're trying to bootstrap a microblaze or hexagon or something that's
never run Linux before needing to get python working before the system
can rebuild itself natively is crazy.)
I originally wrote that in python because merging the help text of a
command with multiple options (especially merging the "usage:" strings)
was just too fiddly for shell scripts... and then I never got around to
implementing that. :) Redoing it in C now...
> Only requirement is python 2.7 since it's using argparse instead of
> optparse.
Yeah, about that:
Traceback (most recent call last):
File "scripts/pybloat.py", line 13, in <module>
import argparse
ImportError: No module named argparse
make: *** [bloatcheck] Error 1
How would I install argparse on Ubuntu 10.04 LTS? It doesn't seem to be
there by default. (Python 2.6.5 apparently.)
Rob
More information about the Toybox
mailing list