[asdf-devel] keeping versioning information externally
avodonosov at yandex.ru
Thu Nov 28 22:24:37 UTC 2013
I want to highlight another tool to deal with versioning.
19.11.2013, 23:41, "Robert P. Goldman" <rpgoldman at sift.info>:
> two versions of the same library on the same machine is quite feasible,
> and indeed I do this myself, every day. I have different
> source trees for different projects, and with each source tree
> is associated a different ASDF configuration.
> This is not a futuristic "wouldn't it be nice if..." situation, either:
> it's a simple requirement of my daily work environment. E.g., I have
> projects that rely on different versions of FiveAM (they are hosted
> differently, so it's not just a matter of demanding that everyone
> upgrade -- some I run, some I don't).
I did that too. I had a config file vermap.lisp
which puts directories of the libary versions
I need to ASDF central registry.
So, when we say :depends-on (#:fiveam) we have an external
configuration which specifies then exact version of fiveam
to be loaded.
The external configuration is a flat mapping:
(:name :chunga :ver "0.4.3")
(:name :cl-base64 :ver "3.3.2")
(:name :cl-cont :ver "0.3.4")
(:name :cl-containers :ver "0.9.10")
(:name :cl-fad :ver "0.6.2")
(:name :cl-html-parse :ver "1.0")
I called such a mapping a "vermap" or a "libworld".
I used different vermaps for different applications.
And Quicklisp uses this approach. Quicklisp dist version
is a collection of releases, it specifies what
exact release of fiveam is used by asdf:load-op "fiveam".
This approach is different from the case where
each libary author specifies constrains for the library
dependencies, and the library loader tries to find some versions
which satisfy the constrains.
With the exact mapping we have a reproducible
configuration. For example, my application
startup script does (require-quicklisp :version "2013-01-28"),
so that when the application is deployed on server,
it works with exactly same library versions as it was
tested on the development machine.
Developers can collaborate to assemble library version
and share vermaps which are consistent and tested
to work well together. They can be shared inside
a company, or globally, like Quicklisp does.
More information about the asdf-devel