Hey Blake, for that workflow you describe, I think the closest candidate would be clpm:
https://www.clpm.dev/ You can add sources such as quicklisp a url, git repo, etc. and it sets this up locally to your project. Unfortunately, I don't have much experience with it since I found out about it until I stopped working with CL. Hopefully that helps! On Sat, Sep 23, 2023 at 10:52 AM Pascal Bourguignon <p...@informatimago.com> wrote: > Le 23/09/2023 à 16:56, Blake McBride a écrit : > > Thanks for all of the replies! Although I have been playing with Lisp > > for many years, I do not have much experience with ASDF or QuickLisp. > > > > I appreciate all of the suggestions and explanations, however, with > > respect, they all seem like work-arounds or hacks for my purposes. I am > > not suggesting, however, that your input wasn't valid, helpful, or there > > is a better way. > > > > I understand the idea that QuickLisp is not a package manager but a > > system manager. In that case, it delivers completed system easily and > > conveniently. It's a great tool. > > > > I think a true package manager option in QuickLisp would be incredibly > > useful. Here is the scenario. > > It's a question of terminology actually. Since Common Lisp has a > namespace type called PACKAGE, we use the name system for what is called > package in other ecosystems. But quicklisp is a true "package" manager, > ie system manager in that sense. > > > > I am building a system. It has dependencies X, Y, and Z. I complete my > > system and package it up as a QuickLisp system. > > There's no "Quicklisp system" per se. There are asdf system (and other > kind of systems, using older defsystem macros, but rarely used anymore, > since those that are used, have been upgraded to asdf). > > In this part, Quicklisp is used as a distribution mechanism for asdf > systems. To have an asdf system included in the Quicklisp distribution, > you would make an issue to the quicklisp-projects github repository, and > wait for Xach to do include it. > > Note an important and regretable property of Quicklisp: it distributes > system sources pruned of any version management data. Some system may > come from tarballs, without version management, but most systems come > from various distributed version management collections. > > You can use the following tool to retrieve the origin of a quicklisp > distributed system: > > cl-user> (com.informatimago.tools.quicklisp:quick-where-from :alexandria) > > (:system "alexandria" :distribution "quicklisp" :directory > #P"/Users/pjb/quicklisp/dists/quicklisp/software/alexandria-20230618-git/" > :where-from ("git" > "https://gitlab.common-lisp.net/alexandria/alexandria.git")) > ; No value > cl-user> > > it's in https://github.com/informatimago/lisp > > > > Later, I'd like to work > > on my system. I'd like to work on a local copy in a directory of my > > choosing. I'd like it to load its dependencies (X, Y, and Z) yet work > > on my part of the system without loading the version in the QuickLisp > repo. > > > > While some of your suggestions will allow me to do that, they are real > > clunky. Either I have to work in specific directories or I have to have > > special code specific to the particular directory I choose to work in. > > > > All of this is contrary to the way all other system I've used work. In > > general, I can clone a repo to any directory and do: > > > > ./configure > > make > > sudo make install > > > > and it works! I can put the clone anywhere I want. I can change it > > anyway I want. The system doesn't fight me. > > > > I wouldn't think this would be hard at all to make ASDF and QuickLisp > > have this capability. > > Just put the directory on asdf:*central-registry* or > ql:*local-project-directories*. > > Now, for the alternatives (to quicklisp), there's the ergo vaporware: > https://gitlab.com/informatimago/ergo > irc://libera.chat/#clergo > > And in practice, one alternative that could be used right now, is google > repo. It uses a manifest.xml file to specify the repositories and > commit IDs of the various git repositories to clone to get a system and > its dependencies. > > I've started to write some code to extract the origins and dependencies > of a quicklisp distributed system, to clone them into a directory, where > you could edit and push modifications upstream (or in your forks). > See the work in progress: > > https://gitlab.com/com-informatimago/com-informatimago/-/blob/master/tools/dependencies.lisp?ref_type=heads > > That could serve as basis to generate a manifest.xml for google repo, or > to configure an ergo project. > > -- > __Pascal Bourguignon__ > > -- Wilfredo Velázquez-Rodríguez