[asdf-devel] keeping versioning information externally

Faré fahree at gmail.com
Fri Nov 29 00:56:33 UTC 2013


ASDF was never equipped to resolve versioning constraints, just to
check them. So yes, we need external tools to create assemblies of
mutually-compatible library versions. Quicklisp is such at tool, and
the only one being maintained at this point.

Otherwise, I agree that unless it is both intended and practically
achievable that all useful clients should be updated to use the new
API, it is bad taste to ever issue an incompatible version while
keeping the same name.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The Miracle of the Thanksgivukah:
the Turkey was supposed to be eaten up in one evening, but it lasted eight days.


On Thu, Nov 28, 2013 at 5:24 PM, Anton Vodonosov <avodonosov at yandex.ru> wrote:
> 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.
>
> Best regards,
> - Anton
>



More information about the asdf-devel mailing list