Hi, all--

I am developing a project which I expect will involve a number of extension
libraries, or plugins (a large number, many of them provided by third
parties, if my project ever becomes popular). For several reasons (which I
will explain on request if anyone is curious), I feel it is best *not* to
implement these libraries as eggs. So I am trying to work out a reasonable
method for deploying the libraries and loading them at runtime.

Required features:
 * users (who might not have admin privileges) can determine
    where the libraries are installed
 * users can select which libraries to use in an application (and this
    potentially entails selecting alternate implementations of the
    same functionality)
 * the main application can find the required libraries at runtime

Desirable features:
 * a user should be able to just install the software and start to
    use it without doing any configuration
 * all library code is in modules

I've spent a good deal of time browsing the documentation and
experimenting, and I can see how to achieve the required features but not
the desirable ones. But before I start making compromises, I thought I'd
check with the list to see if my understandings are correct. So here are my
questions ... as implied above, I think the answers are not the ones I
want, but I'm hoping I've overlooked something ;-) :

1) Is there a way to set an arbitrary search path, such that REQUIRE (or
LOAD, or some such thing) will work when the library is in a non-standard
location?

2) Is it possible to load a library selected at runtime (via an environment
variable, config file, command-line argument ... the exact method isn't
that important) AND have the symbols defined in that library included in a
module?

3) Is there a way for a Chicken executable or library to determine its own
location in the filesystem?

4) Is LOAD-RELATIVE broken? I wrote some test code to try to use that
procedure, but as far as I can tell it behaves just like LOAD, i.e. any
relative path I give it is determined relative to the current directory
from which the program is invoked. Though I would note that the
documentation isn't entirely clear to me: "loads FILE relative to the path
of the currently loaded file." ...? What does "the currently loaded file"
mean? I will be happy to post my code if this is not a known issue.

Thanks for any & all info!
--
Matt Gushee
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to