Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Ah. Understood. I solve this problem by forking every Quicklisp repo I use, and telling ASDF to look in my local clones first. This also solves the problem of making it easy to submit a pull request when I fix a bug in a Quicklisp library.

Also -- and this is very important to me -- it means I'm in control of which version of every library I use. I've been burned too many times by Quicklisp "updating" a library that was previously working which doesn't any more. Now I have direct git control over my version coherency and I'm a happy camper.



Have you looked at Qlot (https://github.com/fukamachi/qlot)? It solves the problem of reproducible builds.


Thank you,that is a really good idea.


Is this as easy to do as it sounds? Any chance you have documented any curves along the way?


I have been doing this for a while by following a pattern found here[0]. I typically follow this and copy every asdf package dependency into the working directory of whatever project I'm working on [setting the subdir-search-registry to (list (truename "./asdf-systems/")) and placing the files into a subdirectory of that name] .This way I have the option to make changes in them without affecting anything else on the system depending on the same package. In general this means I use Quicklisp as a (huge) convenience in finding packages when programming interactively in the REPL, but not in deployment. I think this setup is also nice because it is dead simple to drop in copies of asdf packages from the web that aren't found in the Quicklisp library.

[0] https://en.wikibooks.org/wiki/Common_Lisp/External_libraries...


I do it like this because the asdf central-registry variable (which I can't write here because of asterisk problems) is supposedly deprecated:

  (asdf:initialize-source-registry
    (:SOURCE-REGISTRY
     (:EXCLUDE "exclusion-string1" "exclusion-string2")
     (:TREE #P"/Users/me/Lisp/my-repos/")
     (:TREE #P"/Users/me/Lisp/quicklisp-repos/")
     (:TREE #P"/Users/me/main-project/src/")
     :IGNORE-INHERITED-CONFIGURATION))


It's all manual now but not that hard. Buried in Quicklisp are the locations of all its repos. The reason I haven't automated it is I don't know if there's a Github API for "Please fork this URI into my account if that's not already done." (Plus not every repo is on Github, and not every QL repo is a proper repo.) I haven't bothered to look into automating it because I don't use that many QL libraries, so manual operation is fine for me. Happy to work with you if you want to try to automate the process.


About 90% libraries from Quicklisp are hosted on the GitHub.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: