Opened 3 months ago
Last modified 3 months ago
#1842 new defect
Possibly inconsistent install/lookup behavior in the presence of CHICKEN_INSTALL_PREFIX — at Initial Version
Reported by: | Mario Domenech Goulart | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | someday |
Component: | core libraries | Version: | 5.4.0 |
Keywords: | CHICKEN_INSTALL_PREFIX, chicken-install, srfi-29 | Cc: | |
Estimated difficulty: |
Description
The title is very poor and the description is going to be a paste of the discussion in #chicken.
Basically, the issue is highlighted by one of the tests of srfi-29
-- testing Installed Test Bundle ------------------------------------- (localized-template/default 'srfi-29 'srfi-29) ............... [ FAIL] expected "SRFI 29" but got srfi-29
Discussion in #chicken:
<mario-goulart> klovett: apparently srfi-29 is installing the srfi-29 bundle via the `data' section in the .egg file. That makes the bundle be installed under PREFIX/share/chicken when CHICKEN_INSTALL_PREFIX is *unset*. When CHICKEN_INSTALL_PREFIX *is set* (that's what salmonella does), the srfi-29 bundle is installed under PREFIX/share (no chicken directory). <mario-goulart> Then srfi-29 looks for bundles under include-path, which resolves to C_INSTALL_SHARE_HOME when CHICKEN_INCLUDE_PATH is *unset*. In that case, PREFIX/share/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX). However when CHICKEN_INCLUDE_PATH *is set*, chicken-install installs the bundle under PREFIX/share, but in runtime it looks for bundles under include-path, which is the value of CHICKEN_INCLUDE_PATH, which is set by salmonella as <mario-goulart> PREFIX/share/chicken. <Bunny351> hm... <mario-goulart> Now I don't know if salmonella is setting CHICKEN_INCLUDE_PATH wrongly of if the default values given to override-prefix in egg-compile.scm is wrong. <Bunny351> possible <mario-goulart> The default values given to override-prefix definitely don't match the values of C_INSTALL_INCLUDE_HOME and C_INSTALL_SHARE_HOME. <klovett> originally it only looked in (chicken-home) <mario-goulart> I think that was the same as what now (include-path) is, if I'm not mistaken. <klovett> well, one is a set <mario-goulart> I _think_ (don't quote me on that) the root cause of the issue is the inconsistency between the values of C_INSTALL_INCLUDE_HOME/C_INSTALL_SHARE_HOME and the way that override-prefix assembles paths when when CHICKEN_INSTALL_PREFIX is set. <klovett> is something is chicken.platform returning PREFIX/share? i can code the envvar test & subsequent path assumption but rather not. <mario-goulart> That's part of the problem I'm implying. You can get PREFIX/share *if* CHICKEN_INCLUDE_PATH is set to PREFIX/share. If CHICKEN_INCLUDE_PATH is *not set* you'll get PREFIX/share/chicken (or, more accurately, PREFIX/share/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)). <mario-goulart> This whole thing is very confusing. <klovett> there is not a '(data-path)' so i will assume if CHICKEN_INSTALL_PREFIX is set then push "...PREFIX/share" onto the search list <mario-goulart> I think it would be better to wait a bit. I _think_ srfi-29 is probably doing the right thing. The issue _might_ be in salmonella or in CHICKEN. <klovett> ok <klovett> looks like a job for chicken.platform#data-repository or similar
Note: See
TracTickets for help on using
tickets.