Thanks for the great suggestions, Richard! I'll definitely give it a try!
Blake
------- Original Message ------- On Saturday, September 23rd, 2023 at 3:48 PM, Richard Westhaver richard.westhaver@gmail.com wrote:
Hey Blake,
I am relatively new to Common Lisp and agree that figuring out a decent dev ecosystem can be challenging, the suggestions above are the best portable solution IMO though - using SBCL, I added a single line to ~/.sbclrc : (push #P"~/dev/" ql:*local-project-directories*).
I think scaling this to really large and distributed systems is a challenge though - you basically have ASDF and Quicklisp and it's up to you how you want to make use of them. here's a couple ways I've seen others manage this:
- fukamachi's qlot: https://github.com/fukamachi/qlot - project-local library installer, currently being integrated into the Lem text editor
- nyxt (just use sub-repos): https://github.com/atlas-engineer/nyxt/tree/master/_build
It's Lisp so the perfect solution for your purposes does in fact exist, you just gotta start hacking :).
For example, I'm currently working on a very different approach which may not pay off - dropping Quicklisp and all external dependencies, [ab]using the compiler (SBCL) as much as possible and adding contribs which are distributed with the compiler instead of separate systems.
On Sat, Sep 23, 2023 at 10:56 AM Blake McBride blake@mcbridemail.com wrote:
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.
I am building a system. It has dependencies X, Y, and Z. I complete my system and package it up as a QuickLisp system. 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.
Blake McBride