chicken-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-hackers] [PATCH] Re: Alternative egg installation directori


From: Jim Ursetto
Subject: Re: [Chicken-hackers] [PATCH] Re: Alternative egg installation directories
Date: Thu, 28 Feb 2019 18:08:46 -0600

> On Jun 18, 2017, at 3:35 PM, Mario Domenech Goulart <address@hidden> wrote:
> 
> On Sun, 28 May 2017 23:22:40 +0200 address@hidden 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]