David Craven <da...@craven.ch> skribis: > Hi, I have a couple of questions: > > How do gexps relate to packages? Are they used in the > package->bag->derivation process or is it just for writing services?
Yes, currently. Currently the bag->derivation process uses ‘build-expression->derivation’, which is the (ugly) predecessor of ‘gexp->derivation’. The goal is to switch over to gexps eventually; ‘wip-build-systems-gexp’ does exactly that, but there were performance regressions that I never took the time to address completely. > gexp->script and gexp->file only dump text into the store. How can I > make them ignore the system/target architectures? It’s not really possible, though I agree it would be nice! If we force use of the host system type (say x86_64-linux), independent of (%current-system) (say mips64el-linux), we approach what you want. However, that would give us different derivations depending on the host system type. That is, ‘guix system build -s mips64el-linux -d’ on x86_64 would return something different from ‘guix system build -d’ on mips64. This is not desirable. An option would to have ‘gexp->file’ produce a fixed-output derivation (it can compute the hash of the output on the host side). Or maybe we need another mechanism similar to fixed-output derivations to define equivalence classes of derivations. Food for thought… Ludo’.