Cleaning up the dependency hell. Usually I work on games that have one or two dependencies (SDL, OpenAL, maybe a statically linked libpng or whatever), but Second Life has quite a pile of them, some of which have fairly complex dependencies of their own (Mozilla, anyone?) and many that depend on each other (all projects grow until they reference zlib, I swear).
Fortunately, working on Google Earth, also a bit of a middleware magnet, taught me a lot about how to manage this sort of thing. Tapdancing around misconfigurations and symbol clashes and unnecessary dependencies (oh my!) is really a science…or a black, unholy art. If you ever have to make this happen yourself, my best advice is this: automate the hell out of it. Write a big shell script that builds (and rebuilds, and rebuilds, and rebuilds…) every third party library from scratch. This is both because you won’t remember how you did it in six months when you need to change something, and because you won’t remember how you did it in five minutes when you are iterating yet again to tweak a piece of the build. In some cases I adopted the Gentoo Portage mentality (build to a temporary –prefix, then copy the bits you actually care about from the installed image), and in some cases I wrote a simple shell script that explicitly compiles each file the way I want it, bypassing the autotools badness. Time spent on this in the past week: pretty much every waking hour, minus the COD2 issues above. For all the effort, progress is really incremental (especially when you find out your 4-in-the-morning typo makes the Mozilla build die yet again, 30 minutes into the run…how painful!)
One Response to “Second Life Development Update”
Leave a Reply
You must be logged in to post a comment.