Postings by Mathias on July 2, 2007
SoC-Status 2007/07/02
Last week I wanted to implement something to show, so I started on baseline alignment. First lesson I've learned: The original idea, of just changing the vertical position of the widgets turned out to be thought too simple. Instead of applying the baseline adjustments from the outside by tweaking the widgets GtkAllocation, I have to tell the widgets which offset they should apply to their baselines to produce a proper offset. This was easy to implement for GtkLabel - despite all xalign and xscale hacks in that widget. What bloat we have in GTK+, that a simple label widget has to consume more than 4500 lines of code!? On propagating those baseline offsets through simple GtkBin, especially GtkAlignment widgets I've cut my teeth. So I dedided to take a break from baseline alignment and implement natural sizing. Results of my efforts can be watched in the screencast. Well, or in the extented-layout branch of GTK+.
Stripping down GNU make
After reading Thomas' rant about automake 1.10 rejecting GNU-makeism in its script I wondered if it wouldn't possible to ship GNU make with all tarballs, instead of all the autotools crap. So I did some experiments this morning.
Raw GNU make 3.81 as distributed by the FSF requires 1.1 MB. After unpacking 6.4 MB of disk space are used:
576 config/
1052 doc/
140 glob/
2028 po/
556 tests/
168 w32/
2080 .
Considering the goal of distributing GNU make with each of your tarballs, quite alot of space is used by non-essential stuff like unit tests, documentation and translations. Removing the doc, po and tests folder produces a much smaller tarball:
-rw-r--r-- 1 mathias mathias 541323 2007-07-02 07:50 make-3.81.tar.bz2
That's already smaller than the configure script shipped with make 3.81 (takes 456k) and the m4 macros used to generated it (576k). Encouraged by this, I became even more radical - I removed the autoconf stuff:
-rw-r--r-- 1 mathias mathias 364566 2007-07-02 07:53 make-3.81.tar.bz2
Well, but this steps leaves you without any platform detection for the build system. So some replacement would be needed. Tried with bulldozer some time ago, by injecting pre-conditions and checks as rules into my GNUmakefile. Worked with few code. Maybe worth to start a library of GNU make based platform detection rules?
Conclusion: Avoiding GNU-makeisms in automake scripts is absolutely pointless, because:
- GNU make is available for any platform your software supports anyway.
- The core of GNU make is that much smaller than the usual autoconf/automake bloat, so it could be shipped with every tarball to make up the build system.
- Its only a matter of time, until Greenpeace shows up and blames the free software community for wasting insane amounts of electrons.