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

Reply via email to