Adium Contributions
Over the last few weeks I’ve been contributing more to Adium:
- Rewrote the README file for the dependency build scripts to document how to check out the source of libpurple and msn-pecan. [24178]
- Tracked down issues with compiling Adium with gcc-4.2; turns out it’s Apple’s fault. #10308
- Wikified the output of the Clang Static Analyzer so developers can track the issues.
- Eradicated the pervasion of “flippies” throughout Adium source, though the evands stopped the bloodshed in [24125].
- Heavily updated the libpurple build script, mostly to support incremental builds. [24354]
- Figured out why some pasted newlines get lost in translation. #10474
- On Pidgin’s side of the fence, I’m slowly updating libpurple to use libnatpmp and MiniUPnP for NAT traversal. (Thus all the attention to build scripts!)
Incremental Building
I think the libpurple build script improvements are the most noteworthy. The old build script did not support incremental builds, so if any of the code changed the whole library needed to be rebuilt from scratch, which includes running autoconf and automake. Usually these only need to be run once, but since we build libpurple for both PowerPC and Intel, each time we switched architectures the configuration files would be overwritten.
I used DTrace to track all the files that were opened for writing during the build process for each architecture. This wasn’t so easy, as Apple’s file description translator is incomplete and does not translate paths correctly. After a few attempts (what do you mean DTrace can’t run this?!), I got an ugly workaround that correctly printed the absolute paths of all files touched during the build.
With one file list per architecture, I was able to easily extract the files that were touched during both builds. The build script now safely moves these files out of the way and restores them as necessary so that the files for each architecture don’t interfere with each other.
There are still some quirks to the automake system that I don’t fully comprehend, but it feels good to have a build that used to take several minutes complete in a few seconds.
It’s been a productive few weeks; I’ll keep working on things as time permits. I’d like to eventually become more familiar with the main application code and become a regular contributor.