Versioning

16 views
Skip to first unread message

Anton Vodonosov

unread,
Oct 13, 2010, 7:10:07 AM10/13/10
to Quicklisp
Hello.

Is Quicklisp going to deal with library versions? E.g. one time you
want hunchentoot 1.1.0, other time you want hunchentoot 0.15.7.

Best regards,
- Anton

Zach Beane

unread,
Oct 13, 2010, 9:02:55 AM10/13/10
to quic...@googlegroups.com
Anton Vodonosov <avodo...@gmail.com> writes:

> Hello.
>
> Is Quicklisp going to deal with library versions? E.g. one time you
> want hunchentoot 1.1.0, other time you want hunchentoot 0.15.7.

That is not yet directly supported, but there are a few elements to
Quicklisp's project archives and metadata that I hope will make it
easier.

First, when a project's .tgz file is uploaded to the Quicklisp archives,
it is given a permanent location that isn't changed or deleted. A
reference to hunchentoot 1.1.0's archive file will remain valid.

Second, when a set of projects is organized into a dist, its metadata
files (systems.txt and releases.txt) are published to a canonical
permanent location as well. In 2012, you could decide you need to get a
version of Hunchentoot that was current in 2011, and get all the
projects that were part of its supporting universe in that timeframe,
too.

With those two things in mind, people could create their own metadata
collections, so you could create one called "old-hunchentoot", and have
it point to a very specific hunchentoot archive and, if necessary,
related files.

There isn't any code to make this kind of time travel or time freezing
easy to do, yet, but it's on my list of things to finish for 1.0.

Zach

Anton Vodonosov

unread,
Oct 16, 2010, 8:35:12 AM10/16/10
to Quicklisp
Cool, I like it.

It iis very similar to how I load different library versions. I have a
file vermap-01.lisp with content like

((:name :alexandria :ver "0000")
(:name :anaphora :ver "0.9.3")
(:name :babel :ver "0.2.0" :asdf-dir "babel_0.2.0")
(:name :cffi :ver "080926")
(:name :cl-json :ver "0.3.1" :asdf-dir "cl-json_0.3.1")
...
)

Then a trivial function LIST-ASDF-DIRS which calculate directory names
for libraries. It is used like this:

(setf asdf:*central-registry* (list-asdf-dirs "vermap-01.lisp"))

LIST-ASDF-DIRS is trivial, because I store all the libraries in one
flat directory, and library subdirectories have suffixes according to
the library version
alexandria-0000/
anaphora-0.9.3/
babel_0.2.0/
cffi-080926/
cffi-090804/
cl-json_0.3.1/
...

When I want to select another set of libraries versions, I just use
another vermap file:

(setf asdf:*central-registry* (list-asdf-dirs "vermap-02.lisp"))
Reply all
Reply to author
Forward
0 new messages