build-system/haskell: Add default output "static".

* guix/build-system/haskell.scm (lower): Add OUTPUTS keyword and add the
"static" output in the common case.
(haskell-build): Set the default value for the OUTPUTS keyword to include the
"static" output.
* guix/build/haskell-build-system.scm (install): Move static libraries to the
"static" output if it exists.
This commit is contained in:
Ricardo Wurmus 2020-06-16 22:28:54 +02:00
parent 9e5496e0ae
commit 718dc7d4a5
No known key found for this signature in database
GPG key ID: 197A5888235FACAC
2 changed files with 20 additions and 6 deletions

View file

@ -67,7 +67,7 @@ (define* (lower name
#:rest arguments) #:rest arguments)
"Return a bag for NAME." "Return a bag for NAME."
(define private-keywords (define private-keywords
'(#:target #:haskell #:cabal-revision #:inputs #:native-inputs)) '(#:target #:haskell #:cabal-revision #:inputs #:native-inputs #:outputs))
(define (cabal-revision->origin cabal-revision) (define (cabal-revision->origin cabal-revision)
(match cabal-revision (match cabal-revision
@ -95,7 +95,10 @@ (define (cabal-revision->origin cabal-revision)
,@(standard-packages))) ,@(standard-packages)))
(build-inputs `(("haskell" ,haskell) (build-inputs `(("haskell" ,haskell)
,@native-inputs)) ,@native-inputs))
(outputs outputs) ;; XXX: this is a hack to get around issue #41569.
(outputs (match outputs
(("out") (cons "static" outputs))
(_ outputs)))
(build haskell-build) (build haskell-build)
(arguments (strip-keyword-arguments private-keywords arguments))))) (arguments (strip-keyword-arguments private-keywords arguments)))))
@ -109,7 +112,7 @@ (define* (haskell-build store name inputs
(configure-flags ''()) (configure-flags ''())
(phases '(@ (guix build haskell-build-system) (phases '(@ (guix build haskell-build-system)
%standard-phases)) %standard-phases))
(outputs '("out")) (outputs '("out" "static"))
(search-paths '()) (search-paths '())
(system (%current-system)) (system (%current-system))
(guile #f) (guile #f)

View file

@ -2,7 +2,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -131,9 +131,20 @@ (define* (build #:key parallel-build? #:allow-other-keys)
`(,(string-append "--ghc-option=-j" (number->string (parallel-job-count)))) `(,(string-append "--ghc-option=-j" (number->string (parallel-job-count))))
'()))) '())))
(define* (install #:rest empty) (define* (install #:key outputs #:allow-other-keys)
"Install a given Haskell package." "Install a given Haskell package."
(run-setuphs "copy" '())) (run-setuphs "copy" '())
(when (assoc-ref outputs "static")
(let ((static (assoc-ref outputs "static"))
(lib (or (assoc-ref outputs "lib")
(assoc-ref outputs "out"))))
(for-each (lambda (static-lib)
(let* ((subdir (string-drop static-lib (string-length lib)))
(new (string-append static subdir)))
(mkdir-p (dirname new))
(rename-file static-lib new)))
(find-files lib "\\.a$"))))
#t)
(define (grep rx port) (define (grep rx port)
"Given a regular-expression RX including a group, read from PORT until the "Given a regular-expression RX including a group, read from PORT until the