Hello, I'm currently working on packaging common-lisp libraries. I am facing a design question that I can't answer.
First : Where do we want the libraries installed ? I was going for /usr/local/lib/common-lisp/{libfoo,libbar,libX} it looks that it's done this way for python Then, once it's installed, we need to tell the _multiple_ CL implementations where to look for those libraries. There are multiple ways : - write a wrapper for each implementation binary which add a CL_SOURCE_REGISTRY environment variable to /usr/local/lib/common-lisp/ - write for each implemtation a config file in /etc/common-lisp/source-registry.conf.d/{sbcl,ecl,clisp}.conf with the libraries path inside. We can have only one /etc/common-lisp/source-registry.conf file but I'm not sure it will play well with multiple implementations because we can't one which package will install the file ? - make a patch in each CL implementation to insert the path hardcoded inside, which will require to keep the patchs up-to-date if there are changes in the sources I am not sure which way is the better one. Maybe patching each implementation ? The patch for lang/sbcl just looks like this, it's very easy : ("asdf" is the library which handle libraries, that we need to patch. It's also embedded in ecl and clisp.) --- contrib/asdf/asdf.lisp.orig Tue Nov 22 17:53:12 2016 +++ contrib/asdf/asdf.lisp Tue Nov 22 17:53:54 2016 @@ -3131,6 +3131,7 @@ after having found a .asd file? True by default.") #+scl (:tree #p"file://modules/"))) (defun default-user-source-registry () `(:source-registry + (:tree "/usr/local/lib/common-lisp/") (:tree (:home "common-lisp/")) #+sbcl (:directory (:home ".sbcl/systems/")) (:directory ,(xdg-data-home "common-lisp/systems/")) Regards