Andy Wingo <[email protected]> writes: > On Tue 21 Feb 2017 13:13, Mathieu Lirzin <[email protected]> writes: > >> IIUC the problem you have is that in a Guix build environmnent, Guile >> tries but *fails* to autocompile ".scm" files because it doesn't find >> any directory that it can write on? > > Correct. > >> Since /tmp is writeable in a Guix build environment and in most POSIX >> systems (I guess), Would it make sense for Guile itself to fallback to >> /tmp for its compilation cache? > > It's possible. It's a bit gnarly though: > > * you get the usual race conditions between users and /tmp that you > have to mitigate
Nothing different from the race conditions for a single user using XDG_CACHE_HOME when compilation is done by multiple threads? > * you have to be more careful about permissions (it could be that the > .go embeds something secret) > - each user would have to have their own path here Indeed. > * guile would have to look in /tmp in addition to XDG_CACHE_HOME when > looking for autocompiled files > > * what if the one in /tmp is fresh but the one in XDG_CACHE_HOME is > not, or vice versa? This two last points makes me think of a the general issue with caching. Maybe we could apply the the sane principles of memoization by computing the "value" of a file (by hashing it?) and search it in the different ".go" stores (GUILE_LOAD_COMPILED_PATH, XDG_CACHE_HOME, site-ccache, ...)? I don't know if the idea is stupid or not, maybe I miss an obvious point. Anyway this doesn't fit the purpose of fixing your issue in the short term. > I'd rather use XDG_CACHE_HOME for this as it's already well specified > and actually not Guile-specific > (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html). Setting XDG_CACHE_HOME to the build directory or /tmp in the Guix build environnement seems fine to me. Thanks. -- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37
