Ludovic Courtès <l...@gnu.org> writes: > Hi! > > Commit 7ca87354db53fd1e1a7a3dfeddb9a598ea064bbe adds (guix module), > which provides a way to compute the closure of a Scheme module by > looking at its source code. > > This has to do with typical ‘with-imported-modules’ usage, as explained > in the manual: > > --8<---------------cut here---------------start------------->8--- > Usually you want the _closure_ of the module to be imported—i.e., the > module itself and all the modules it depends on—rather than just the > module; failing to do that, attempts to use the module will fail because > of missing dependent modules. The ‘source-module-closure’ procedure > computes the closure of a module by looking at its source file headers, > which comes in handy in this case: > > (use-modules (guix modules)) ;for 'source-module-closure' > > (with-imported-modules (source-module-closure > '((guix build utils) > (gnu build vm))) > (gexp->derivation "something-with-vms" > #~(begin > (use-modules (guix build utils) > (gnu build vm)) > ...))) > --8<---------------cut here---------------end--------------->8--- > > The benefit can be seen in the next commit: > > > http://git.savannah.gnu.org/cgit/guix.git/commit/?id=239c6e276214813f59f761c9dc5cc0e9d266b49b
Ah, very nice! Why is it necessary to read the file and parse the define-module expression? Does Guile not keep any of this information? Should it? Will something like this become part of Guile eventually? ~~ Ricardo