Summary

Possibly inconsistent install/lookup behavior in the presence of CHICKEN_INSTALL_PREFIX

Metadata

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 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

Changes and comments

[2024-08-26 18:33:22 UTC] mario changed description