The Grass is Always Greener Over the Septic Tank · 18 June, 02:53 PM
Tim Bray’s Gnu Tool Moan really resonates with me, because I’ve been fighting battles with build tools in the Java/.NET world, specifically TeamCity. TeamCity is pretty slick in its own way, but I keep thinking to myself that make had this pretty much solved a long time ago. Apparently make and autoconf aren’t all that, after all.
I seem to remember that one big driver behind the creation of Ant was frustration with make, specifically with the syntactic whitespace. That doesn’t seem to have slowed Python too much, and the story’s possibly apocryphal, but nonetheless, Ant’s here, and it’s quite a bit different from make.
Ant implemented one philosophy that TC has picked up on: it turns dependencies on their head, where targets now output artifacts that trigger other targets. The make way of doing things, where a target evaluated its dependent targets before executing, seems like a better way to operate. TeamCity actually makes the artifact dependencies somewhat difficult to use, in that it doesn’t optimize dependencies to minimize the number of builds. If you’ve set up dependency triggers on a project that occurs multiple times in the dependency chain, you can have dependent projects getting built several times. For example, if A.dll depends on B.dll and C.dll, and B.dll also depends on C.dll, building C.dll may cause A.dll to get built twice: once by the C.dll trigger and again by the B.dll trigger. That’s probably on the “features to implement” list, but OTOH, I doubt that make has that problem.
— Gordon Weakliem
Comment
Commenting is closed for this article.