Ludovic Courtès <l...@gnu.org> writes: > Hello, > > Hilton Chain <hako@ultrarare.space> skribis: > >> Activation scripts are already ‘program-file’s, but unfortunately >> (gnu build activation) and (guix build utils) are implicit dependencies. >> This >> is hard to change at the moment. >> >> I have sent a patch which might partially address your issue: >> >> [PATCH v2 3/3] services: activation: Continue on exceptions. >> https://issues.guix.gnu.org/73494#26 >> >> It executes activation scripts by ‘invoke’, so they won't change the >> environment. > > Activation snippets all run in the same Guile process so far, mostly out > of a concern to be more efficient than running each one in a separate > process as you suggest. > > The downside is what Tomas found out: the load path is global to the > entire set of activation snippets. > > Now, maybe we could have the best of both worlds: instead of > ‘activation-script’ doing > > (for-each primitive-load '#$actions) > > it could do something like: > > (for-each (lambda (action) > (guard … ;like Hilton suggests > (save-module-excursion > (lambda () > (set-current-module (resolve-module '(guile-user))) > (primitive-load action))))) > '#$actions) > > Thoughts?
+1 for the approach, for implementation I think you need (make-fresh-user-module) instead of (resolve-module '(guile-user)). > > Ludo’. -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.
signature.asc
Description: PGP signature