Hi Guix!
Each build-system sets its own imported-modules and modules, but in the
case where we would want to generalize a function which takes a
build-system in its arguments, there doesn't seem to be a way to access
the imported-modules and modules from this build-system. (I have a
specific use-case in mind for extending/modifying arbitrary
build-systems, related to 68315).
I would like to make that metadata available at the build-system
level. This would require setting procedure properties on builder
functions, in every build-system, like so:
(set-procedure-properties!
gnu-build
`((imported-modules . ,%default-gnu-imported-modules)
(modules . ,%default-gnu-modules)))
This would allow things like that:
(let* ((lower (build-system-lower target-build-system))
(imported-modules (procedure-property lower 'imported-modules))
(modules (procedure-property lower 'modules)))
(values (whatever-proc lower args)
imported-modules
modules))
Where target-build-system could be any build-system. I guess changing
properties doesn't change derivations, so this would not lead to a world
rebuild.
Would you accept such a patch upstream ? (It's not hard to write so I
prefer to agree the idea upon it first).
--
Best regards,
Nicolas Graves