I use a vanilla Quicklisp installation. For some local directory trees I configure ASDF to prefer those trees over the standard Quicklisp versions by placing text like the following in my $HOME/.config/common-lisp/source-registry.conf file:
(:source-registry (:tree "/home/brown/toe/open-source/") ;; For swank.asd (:tree "/home/brown/local/software/source/slime/") :inherit-configuration) The format of source-registry.conf is documented in the ASDF repository. Notice that each directory path must end with a slash character. On Sat, Sep 23, 2023 at 1:30 PM Wilfredo Velazquez <zulu.in...@gmail.com> wrote: > > 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