Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Zach Beane <xach <at> xach.com>
Subject: Re: On the road to replacing C++
Newsgroups: gmane.lisp.lispworks.general
Date: Thursday 21st February 2013 19:26:59 UTC (over 4 years ago)
Camille Troillard  writes:

> I have not been convinced Quicklisp would be useful for my needs at
> least in its current state.  My biggest problem with Quicklisp is that
> you can't be sure when a component will be updated.  This is important
> for reliability reasons, if a library is used in several projects, you
> want to keep the one that worked with your code until you decide to
> update your work.

Quicklisp does actually have provisions to lock in a set of consistent
versions, but unfortunately it's poorly documented. The only way to know
about it is from reading the source code, which is not an acceptable
form of documentation IMO.

Quicklisp will never update libraries on its own. It must always be
triggered by (ql:update-dist "quicklisp") or (ql:update-all-dists). 

What is more likely to happen is that different installations of
Quicklisp have differing sets of libraries; by default, Quicklisp
installation will grab the latest dist. So you might have computer A
with quicklisp dist "2012-08-11" from when you started a project in
August, but computer B has quicklisp dist version "2012-12-23" with
newer libraries, and computer C has an even more recent version
"2013-02-17".

However, you can synchronize which sets of libraries are in use across
multiple computers like so:

Find out which version you want to lock to, by running the following on
the "critical" system:

  (in-package ql-dist-user)
  (ql-dist::canonical-distinfo-url (dist "quicklisp"))

This will yield something like
"http://beta.quicklisp.org/dist/quicklisp/2012-08-11/distinfo.txt".
Then,
on the systems which should use the same sets of libraries, use this:

  (in-package ql-dist-user)
  (install-dist "http://beta.quicklisp.org/dist/quicklisp/2012-08-11/distinfo.txt"
:prompt nil :replace t)
  (inhibit-subscription (dist "quicklisp"))

That is one way to ensure that each system with Quicklisp is using the
same set of libraries, and that nothing is updated even if
(ql:update-dist "quicklisp") is called.

I would also like to add a system for exporting a set of
Quicklisp-supplied libraries to a directory structure so they can be
bundled up by some other non-Quicklisp process, e.g. for delivery in an
application, so Quicklisp is not needed at build- or run-time.

There are a number of other things to improve to make this process
smoother. I'm slowly working on them.

Hope this helps,
Zach

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
[email protected]
http://www.lispworks.com/support/lisp-hug.html
 
CD: 3ms