> On Jun 18, 2017, at 3:35 PM, Mario Domenech Goulart <[email protected]> > wrote: > > On Sun, 28 May 2017 23:22:40 +0200 [email protected] wrote: > >> Here a patch for this. CHICKEN_INSTALL_PREFIX overrides the bin, >> include or share directories when generating the install scripts. Note >> that the installed egg-info files refer to the new directory as well, >> so this is not the same as DESTDIR. chicken-status + >> chicken-uninstall will list and uninstall files woth set prefix >> transparently. Egg-loading is not influenced, so this is much simpler >> and less eror-prone than the old CHICKEN_PREFIX. > > Not all programs shipped by salmonella have been ported (only salmonella > and salmonella-log-viewer [*]), but salmonella is able to test itself, > at least. I've tried it with awful-static-pages (added to > chicken-5-eggs repo), whose tests call a binary installed by its own egg > and it seems to work as well.
I might have found an issue here. There doesn’t seem to be a way to locate the installed files after you’ve installed them into your install prefix. For example, take the utf8 egg. It installs a file “case-map-1.dat” into the share directory, and it uses (chicken-home) to locate the share directory. However, (chicken-home) is not affected by CHICKEN_INSTALL_PREFIX, so it cannot locate these files. You can reproduce this problem with `csi -R utf8-case-map`. (installation-repository) does not work either, because it doesn’t point to the share dir and it could differ from the install prefix. Thus utf8-case-map is currently broken in a private repo. Admittedly, this module is probably not used much, and even less in a private prefix. This also affects chicken-doc, as that defaults to (chicken-home) when looking for its own repository. In this case though, it can be worked around because the CHICKEN_DOC_REPOSITORY env var can be set to specify the repository location directly. It doesn’t look like too many eggs are affected in practice. Quite a few eggs install things in the share directory, but they don’t reference it at runtime. Eggs that I know are affected are: - manual-labor: references a css file it installs (using ##sys#include-pathnames — basically chicken-home) - chicken-doc: references its repository, which can be worked around as above - spock: references its "library-path”, which can be worked around by calling it with ‘-library-path’ - utf8: utf8-case-map files as above. Cannot currently be worked around as the path is hardcoded. (There is technically a way but it is not good.) Although this isn’t widespread, it seems odd to have a property that is write-only. Clearly, it is possible to check CHICKEN_INSTALL_PREFIX yourself and reimplement the logic from egg-compile.scm, but that doesn’t seem robust. Thoughts? Jim _______________________________________________ Chicken-hackers mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-hackers
