Subject: bug#32770: Packaging SLIME/SWANK as Common Lisp library

From: Pierre Neidhardt <[email-masked]>
Date: Thu, 04 Oct 2018 10:37:08 +0200

CC-ing Ludovic and Ricardo if they want to chime in.

Thanks for the feedback, Andy, so invaluable as always.

> I've been using a cffi consumer for a while now, and my approach for
> that package was to update references to library and header files with
> the full paths to their respective store items.

Cool!  Can you share this package?  Or provide an example?
Can't wait to get this up and running!

> Adding to *foreign-library-directories* at compile time may allow a
> package to compile, but I get the feeling that it may not have the
> desired effect when you try to load the package later on.

Why?  In my experience it works for a compiled Next executable.

> I guess another approach we could take if replacement is undesirable
> would be to modify the cffi package to honour some environment variable
> for its default, and then add that variable to the search path for
> cffi.

The cffi:*foreign-library-directories* approach got recommended to me on
the CFFI mailing list.  I find it similar to what you want, a sort of
environment variable (a search-path global variable).  I haven't looked
into Nix.

> I personally tend to favour replacement, but others could chime in here
> as well since this problem isn't specific to lisp packaging.

Could this be automated?  What I like with cffi:*foreign-library-directories* is
that we could automatically push

    (string-append (assoc-ref inputs "foo") "/lib)

to it so that packages only have to write something like

    #:cffi-packages (list ,cl-sqlite ,cl-foo...)

--
Pierre Neidhardt
https://ambrevar.xyz/