If you have seen any number of articles on this blog (which is highly doubtful), you realize that I often use this as my place to gripe about my favorite technologies (paradox intended). Today, I am here to gripe about asdf-install. For those not fortunate enough to know what I am talking about, asdf-install is a package manager running atop of asdf (a system definition facility for Common Lisp; think of it as being high order packages with lots of meta data and the ability to load files and dependencies semi-automatically). I have used it before in Linux environments, but today I tried it for the first time with clisp and Cygwin on (where else?) Windows.

IT DOES NOT WORK!!!!!!!!!!!!!!!!!

Okay, now that I have screamed in agony, I shall explain. First, it complained about gpg which was easily fixed with a trip to Cygwin's setup program (which is another complaint for another time). I kill clisp and try again. Now the cycle goes:

  1. I run (asdf-install:install 'some-package)
  2. asdf-install complains that the GPG keys do not match. This is, mind you, after I download the key chain off of common-lisp.net and import it. The keys SHOULD match because everything SHOULD be up to date. But no, it fails. Just to be clear, I have randomly tried a wide selection of packages on common-lisp.net. Everything seems fine, but gpg still insists it isn't. Perhaps I did something wrong. At any rate, this is all experimental. Let's just allow it and see what happens...
  3. asdf-install proceeds, then spits out this error:

    gzip: stdin: not in gzip format

    /bin/tar: Child returned status 1

    /bin/tar: Exiting with failure status due to previous errors

For everything everywhere. At this point, I would assume that I was either an idiot or just missed something about asdf-install in my quick view of the docs. But I have set this up and used it before. This issue, so far as I can tell, only happens on Cygwin. I then googled asdf-install cygwin and I find a myriad of complaints. Not identical to mine, with all kinds of advice from ranging from just don't use asdf-install to apply patches and so on and so forth. Needless to say, my end conclusion was that, while I could sit here and try to figure out what's wrong, it just isn't worth it. That's right. I copped out. But I still find the whole process of darcs getting a repository and then adding the location to my .clisprc.lisp file a little wearying. So, I whipped up this little shell script to make life easier:

#!/bin/bash

cd ~/lisp
darcs get http://common-lisp.net/project/$1/darcs/$1/
echo "(push #P\"${HOME}/lisp/$1/\" asdf:*central-registry*)" >> ~/.clisprc.lisp

Not as nice as asdf-install would have been. For example, it really only works with common-lisp.net (which is good, as that is the sourceforge of the lisp world: almost everything of importance is hosted there anyway) and does no dependency resolution. Finally, it is a little hackish, relying on common-lisp.net's typical project URL scheme.