Hi,
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
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).
Best, r
On 20 Mar 2018, at 13:00, Robert Dodier wrote:
Hi,
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