I think what you want might be more easily done through intervening in Quicklisp, instead of in ASDF. "Newest" as defined by the filesystem might not correspond to "newest" in the intuitive sense, depending on how the files get there. In quick lisp, maybe you could make these different projects correspond to different distributions or something.

When I want to deal with multiple projects (my company's projects aren't quicklisp-based), I do it by staring up my lisp session, and then executing a form that initializes the ASDF search path to point to only the directories associated with that project. That has been the easiest way I have found to avoid version clashes and other inconsistencies (like accidentally breaking the project by pulling in a new library without ensuring that it's available to my colleagues).


On 20 Mar 2018, at 13:00, Robert Dodier wrote:


I wonder if it's possible that if multiple .asd's with the same name
are present, I can ensure that  the .asd with the most recent
timestamp is used.

The use case I have in mind is that I'm trying to set up a system to
download automatically-generated tarballs which contain a snapshot of
a project. Snapshots contain whatever was available (in Git) at the
time the tarball is generated. These are unpacked (by Quicklisp) and
all files in the tarball are given timestamps equal to the time at
which the tarball was unpacked (not the time the tarball was generated
and not the time of the most recent file modification or commit).

Each tarball has a different name (derived from Git project name +
most recent commit hash) so there will be multiple .asd files with the
same name in different directories. But since they all have different
time stamps, I think I'm in good shape: I just need to be able to
identify the most recent one.

I see the ASDF manual says: "When looking in a tree, if one system is
found, the search succeeds. If multiple systems are found, the
consequences are unspecified: the search may succeed with any of the
found systems, or an error may be raised. ASDF currently returns the
first system found, ...".

Is there any way to intervene to return a specific system,
specifically the most recent one?

Thank you once again for your help,
Robert Dodier

Reply via email to