John Darrington <j...@darrington.wattle.id.au> skribis: > It's also instructive to experiment a bit by running a command like: > > sudo strace mount -v :/export/junk -o addr=192.168.0.125 /mnt > in which one can see the system call: > mount(":/export/junk", "/mnt", "nfs", MS_MGC_VAL, "addr=192.168.0.125") = 0
Oooh, in that case the patch makes perfect sense. Thanks for explaining! > diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm > index 0d55e91..c6fc784 100644 > --- a/gnu/build/file-systems.scm > +++ b/gnu/build/file-systems.scm > @@ -481,7 +481,21 @@ run a file system check." > (call-with-output-file mount-point (const #t))) > (mkdir-p mount-point)) > > - (mount source mount-point type flags options) > + (mount source mount-point type flags > + (cond > + ((string-match "^nfs.*" type) > + (let* ((host (car (string-split source #\:))) > + (aa (car (getaddrinfo host #f))) > + (sa (addrinfo:addr aa)) > + (inet-addr (inet-ntop (sockaddr:fam sa) > + (sockaddr:addr sa)))) > + (string-append "addr=" > + inet-addr > + (if options > + (string-append "," options) > + "")))) > + (else > + options))) Could we write it as: (if (string-prefix? "nfs" type) (mount-nfs source mount-point type flags options) (mount source mount-point type flags options)) and have a separate: (define (mount-nfs source mount-point type flags options) …) ? Also, the code above must be changed to use ‘match’ instead of ‘car’. It should be (getaddrinfo host "nfs") instead of (getaddrinfo host #f). I’m assuming the syntax for SOURCE doesn’t allow one to specify a TCP port. Is this correct? Thanks, Ludo’.