After having recommended someone try AAP to build vim through its most recent patches for MyDSL, I finally tried it myself to get vim/gvim current on my laptop. I’ve been using the version that came with VectorLinux but kept running into a couple issues that, upon inspection of newer patches, have been resolved. My preference has always been using ports to handle this kind of thing, but I’ve wanted to install compiled binaries as much as possible on this laptop. (Vector does come with a package to use crux ports but I don’t want to install a full ports tree.)
AAP is another project by Bram Moolenaar, developer of vim. AAP is a tool that can be used to acquire sources and patches which it then autobuilds a certain application per a set of recipes. In some ways, it’s similar to a ports system per application — not a full tree — except for the differences (so it’s like ports, but different). Its recipes can do dependency checking but I don’t know if it can do dependency fulfillment in the event certain dependencies’ recipes aren’t also on the system (I skimmed through the documentation but I don’t see how it could know to go to http://foo-site.foo to get the latest source and patches for foo without that all being defined somewhere — it should exit if it can’t find a dependency, right?). It’s based on python. It’s also still a prototype and its lone supported port (application) is vim.
Building vim with aap is very easy. Go to the build directory and enter the appropriate command, e.g., “aap -f URI://path/to/source CVS=[yes,no].” It fetches the sources and patches and then compiles it. When it comes to a halt, the user enters “aap install” and can designate a PREFIX=/path/to/install (as root to install on system with standard /usr/local as default, else install as user in $HOME).
Pretty easy and simpler than wget’ing 293 patches (btw, when is 7.2 coming out?) then applying in a loop. I agree with the download page for vim that aap is by far the easiest way to install vim.
It should also be the easiest path to updating: entering “aap update” in the appropriate directory takes care of rebuilding when new patches are released.
With so many other build systems, CVS/SVN/git, etc., it’s easy to see how aap could get lost in the shuffle or face inertia for adoption. I think it’s promising — keep individual applications updated and current without maintaining full ports trees. It can also be used for other tasks, as Bram wrote in this Linux Journal article a few years ago.
I’m going to try using aap for a couple other things I want to keep updated on my own computers. I may also try to use it on something I’ve been dabbling with the past few weeks: a build based on VectorLinux that’s “lighter” on resources than their developers appear willing to go. I initially thought of doing a low-resource slackbuild that would be on par with what DSL does except only for hard drive installation (no live CD, no frugal, etc.). It would be similar to DeLi except it would offer choice of 2.4 or 2.6 kernel, use standard glibc instead of uclibc, and maybe offer three levels of install (console only, minimal with gtk1, and one with gtk2). I’ll have more to write about it shortly as I sort it out further and weigh making it available.
(Re the last point, I find the prospects of tracking and maintaining and making available widely available sources for FSF’s lawyers objectionable, especially given their recent tendency to sue first and ask questions later. I’d wanted to work on something in parallel to one distro before until I learned of some of the FSF’s tactics on every downstream distributor and the FSF’s penny-ante insistence on being able to recompile every binary included in a sub-distro even if the binaries came from and could be recompiled within the upstream distro. What I want to do would require me to set up separate repositories — because I would be building with fewer options than Vector and Slackware packages use so users of older hardware wouldn’t have to bloat their systems just to use certain applications — and then separately track and maintain sources of contributed packages. Neither is free as in air, and the latter is ridiculous when using vanilla sources directly available from the various projects.)