gnu: knot: Build separate outputs.

* gnu/packages/dns.scm (knot)[outputs]: New field adding :doc, :lib,
and :tools outputs.
[arguments]: Add #:configure-flags to install into :doc and :lib.
Add a new ‘split-:tools’ phase to install into :tools.
Add a new ‘break-circular-:lib->:out-reference’ phase to do just that.
This commit is contained in:
Tobias Geerinckx-Rice 2020-10-15 02:36:02 +02:00
parent 4caa84e299
commit 8154df5307
No known key found for this signature in database
GPG key ID: 0DB0FF884F556D79

View file

@ -827,9 +827,15 @@ (define-public knot
(delete-file-recursively "src/contrib/libbpf")
#t))))
(build-system gnu-build-system)
(outputs (list "out" "doc" "lib" "tools"))
(arguments
`(#:configure-flags
(list "--sysconfdir=/etc"
(list (string-append "--docdir=" (assoc-ref %outputs "doc")
"/share/" ,name "-" ,version)
(string-append "--infodir=" (assoc-ref %outputs "doc")
"/share/info")
(string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
"--sysconfdir=/etc"
"--localstatedir=/var"
"--enable-dnstap" ; let tools read/write capture files
"--enable-fastparser" ; disabled by default when .git/ exists
@ -844,7 +850,7 @@ (define-public knot
(substitute* "configure.ac"
(("enable_xdp=yes" match)
(string-append match "\nlibbpf_LIBS=\"$libbpf_LIBS -lz\"")))
#t))
#true))
(add-before 'bootstrap 'update-parser
(lambda _
(with-directory-excursion "src"
@ -868,7 +874,26 @@ (define-public knot
"install"))))
(add-after 'install 'install-info
(lambda _
(invoke "make" "install-info"))))))
(invoke "make" "install-info")))
(add-after 'install 'break-circular-:lib->:out-reference
(lambda* (#:key outputs #:allow-other-keys)
(let ((lib (assoc-ref outputs "lib")))
(for-each (lambda (file)
(substitute* file
(("(prefix=).*" _ assign)
(string-append assign lib "\n"))))
(find-files lib "\\.pc$"))
#true)))
(add-after 'install 'split-:tools
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(tools (assoc-ref outputs "tools")))
(mkdir-p (string-append tools "/share/man"))
(rename-file (string-append out "/bin")
(string-append tools "/bin"))
(rename-file (string-append out "/share/man/man1")
(string-append tools "/share/man/man1"))
#true))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)