Mathieu Lirzin (2016-01-14 03:46 +0300) wrote: > Hi, > > Ricardo Wurmus <ricardo.wur...@mdc-berlin.de> writes: > >>>From ba328617777728c3534be6796b6b32a9a90954b6 Mon Sep 17 00:00:00 2001 >> From: Ricardo Wurmus <ricardo.wur...@mdc-berlin.de> >> Date: Wed, 13 Jan 2016 16:06:36 +0100 >> Subject: [PATCH] gnu: bind-utils: Build and install "nsupdate". >> >> * gnu/packages/dns.scm (bind-utils)[arguments]: Generalize "build" and >> "install" phases. >> --- >> gnu/packages/dns.scm | 105 >> ++++++++++++++++++++++++++++----------------------- >> 1 file changed, 58 insertions(+), 47 deletions(-) >> >> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm >> index 8357dad..0a42722 100644 >> --- a/gnu/packages/dns.scm >> +++ b/gnu/packages/dns.scm > [...] >> + (arguments >> + `(#:tests? #f ; no test phase implemented >> + #:configure-flags >> + (list (string-append "--with-openssl=" >> + (assoc-ref %build-inputs "openssl")) >> + (string-append "--with-dlz-mysql=" >> + (assoc-ref %build-inputs "mysql")) >> + (string-append "--with-pkcs11=" >> + (assoc-ref %build-inputs "p11-kit"))) > > What about: > > #:configure-flags > (map (lambda (opt val) > (string-append opt (assoc-ref %build-inputs val))) > '("--with-openssl=" "--with-dlz-mysql=" "--with-pkcs11=") > '("openssl" "mysql" "p11-kit"))
As for me, I prefer the original variant as it looks more clear for me. When I look at this (map ...), I need some time to understand what it does. >> + #:modules ((srfi srfi-1) >> + (srfi srfi-26) >> + ,@%gnu-build-system-modules) >> + #:phases >> + (modify-phases %standard-phases >> + (replace 'build >> + (lambda _ >> + (fold (lambda (dir pass) >> + (and pass (zero? (system* "make" "-C" dir)))) >> + #t >> + (append >> + (map (cut string-append "lib/" <>) >> + (list ,@libs)) >> + (map (cut string-append "bin/" <>) >> + (list ,@bins)))))) >> + (replace 'install >> + (lambda _ >> + (fold (lambda (dir pass) >> + (and pass (zero? (system* "make" "-C" dir >> "install")))) >> + #t >> + (map (cut string-append "bin/" <>) >> + (list ,@bins)))))))) > > and this: > > (let ((libs '("dns" "isc" "bind9" "isccfg" "lwres")) > (bins '("dig" "nsupdate"))) > (modify-phases %standard-phases > (replace 'build > (lambda _ > (every (lambda (dir) > (zero? (system* "make" "-C" dir))) > (append (map (cut string-append "lib/" <>) libs) > (map (cut string-append "bin/" <>) bins))))) > (replace 'install > (lambda _ > (every (lambda (dir) > (zero? (system* "make" "-C" dir "install"))) > (map (cut string-append "bin/" <>) bins)))))))) > I also think 'every' is more suitable here. -- Alex