Ludovic Courtès writes: > Hi, > > Christopher Baines skribis: > >> strace -c reports over 10,000 readlink syscalls when reading the derivation >> for the hello package. By just setting the %file-port-name-canonicalization >> fluid, this drops to less than 10. >> >> I'm not sure if this actually improves performance, but doing less is surely >> better. >> >> * guix/derivations.scm (read-derivation-from-file): Set >> %file-port-name-canonicalization to 'none when calling call-with-input-file. >> >> Change-Id: I1ff16a059160576a576f2e9ed881379596e66af3 > > [...] > >> + (let ((drv >> + ;; Avoid calling scm_i_relativize_path in >> + ;; fport_canonicalize_filename since this leads to lots of >> + ;; readlink calls >> + (with-fluids ((%file-port-name-canonicalization 'none)) >> + (call-with-input-file file read-derivation)))) > > This is already done in ‘run-guix’ in (guix ui), for all the ‘guix’ > commands (so this patch would be a slight performance regression for > Guix itself). > > I’d suggest setting this fluid globally in applications that use Guix > (the Build Coordinator, etc.), as is done in Guix itself. > > WDYT? Ah, I didn't realise it was already set for Guix scripts. But yeah, setting it in other places that read derivations makes sense.