5 ms·
In the contemporary Common Lisp ecosystem, software is distributed via Quicklisp[1], which is a centralized software repository, where, once a month, a new soft
by phoe-krk 7y ago
In the contemporary Common Lisp ecosystem, software is distributed via Quicklisp[1], which is a centralized software repository, where, once a month, a new software distribution is created, encompassing the most recent releases of all software included in the dist. This means that changes in software can take up to a month to be reflected in Quicklisp.
Ultralisp is a Quicklisp-compatible distribution, except it's a bleeding-edge one. Each time a piece of software included in it releases a new version/release/commit, a new dist is created, and the modified software is available in Ultralisp within minutes.
[1] https://www.quicklisp.org/ https://www.quicklisp.org/
- dreamcompiler 7y agoAh. 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.
- taeric 7y agoIs this as easy to do as it sounds? Any chance you have documented any curves along the way?
- dreamcompiler 7y agoIt'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.
- svetlyak40wt 7y agoAbout 90% libraries from Quicklisp are hosted on the GitHub.
- dwringer 7y agoI 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/ASDF/Configuring_ASDF#Alternative_to_symlinks,_search_directories_recursively https://en.wikibooks.org/wiki/Common_Lisp/External_libraries...
- dreamcompiler 7y agoI 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))
- mark_l_watson 7y agoThank you,that is a really good idea.
- svetlyak40wt 7y agoHave you looked at Qlot (https://github.com/fukamachi/qlot https://github.com/fukamachi/qlot)? It solves the problem of reproducible builds.