Monday, December 20 2010
Emacs, debian, el-get, release

el-get 1.1, with 174 recipes

Yes, you read it well, el-get currently features 174 recipes, and is now reaching the 1.1 release. The reason for this release is mainly that I have two big chunks of code to review and the current code has been very stable for awhile. It seems better to do a release with the stable code that exists now before to shake it this much. If you're wondering when to jump in the water and switch to using el-get, now is a pretty good time.

New source types

We now have support for the pacman package management for archlinux, and a way to handle a different package name in the recipe and in the distribution. We also have support for mercurial and subversion and darcs.

Also, apt-get will sometime prompt you to validate its choices, that's the infamous Do you want to continue? prompt. We now handle that smoothly.

(el-get 'sync)

In 1.1, that really means synchronous. That means we install one package after the other, and any error will stop it all. Before that, it was an active wait loop over a parallel install: this option is still available through calling (el-get 'wait).

No more failed to install

Exactly. This error you may have encountered sometime is due to trying to install a package over a previous failed install attempt (network outage, disk full, bad work-in-progress recipe, etc). After awhile in the field it was clear that no case where found where you would regret it if el-get just did removed the previous failed installation for you before to go and install again, as aked. So that's now automatic.

Featuring an overhauled :build facility

The build commands can now either be a list, as before, or some that we evaluate for you. That allows for easier to maintain recipes, and here's an exemple of that:

(:name distel
       :type svn
       :url "http://distel.googlecode.com/svn/trunk/"
       :info "doc"
       :build `,(mapcar
                 (lambda (target)
                   (concat "make " target " EMACS=" el-get-emacs))
                 '("clean" "all"))
       :load-path ("elisp")
       :features distel)

As you see that also allows for maintainance of multi-platform build recipes, and multiple emacs versions too. It's still a little too much on the awkward side of things, though, and that's one of the ongoing work that will happen for next version.

Misc improvements

We are now able to byte-compile your packages, and offer some more hooks ( el-get-init-hooks has been asked with a nice usage example). There's a new :localname property that allows to pick where to save the local file when using HTTP method for retrieval, and that in turn allows to fix some recipes.

(:name xcscope
       :type http
       :url "http://cscope.cvs.sourceforge.net/viewvc/cscope/cscope/contrib/xcscope/xcscope.el?revision=1.14&content-type=text%2Fplain"
       :localname "xscope.el"
       :features xcscope)

Oh and you even get :before user function support, even if needing it often shows that you're doing it in a strange way. More often than not it's possible to do all you need to in the :after function, but this tool is there so that you spend less time on having a working environment, not more, right? :)

Switch notice

All in all, if you're already using el-get you should consider switching to 1.1 (by issuing M-x el-get-update of course), and if you're hesitating, just join the fun now!