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

Reply via email to