From 718dc7d4a5e5d26cac80c79d78535677e0379dc8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 16 Jun 2020 22:28:54 +0200 Subject: [PATCH] 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. --- guix/build-system/haskell.scm | 9 ++++++--- guix/build/haskell-build-system.scm | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm index ab93c9601c..f92fbcd713 100644 --- a/guix/build-system/haskell.scm +++ b/guix/build-system/haskell.scm @@ -67,7 +67,7 @@ (define* (lower name #:rest arguments) "Return a bag for NAME." (define private-keywords - '(#:target #:haskell #:cabal-revision #:inputs #:native-inputs)) + '(#:target #:haskell #:cabal-revision #:inputs #:native-inputs #:outputs)) (define (cabal-revision->origin cabal-revision) (match cabal-revision @@ -95,7 +95,10 @@ (define (cabal-revision->origin cabal-revision) ,@(standard-packages))) (build-inputs `(("haskell" ,haskell) ,@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) (arguments (strip-keyword-arguments private-keywords arguments))))) @@ -109,7 +112,7 @@ (define* (haskell-build store name inputs (configure-flags ''()) (phases '(@ (guix build haskell-build-system) %standard-phases)) - (outputs '("out")) + (outputs '("out" "static")) (search-paths '()) (system (%current-system)) (guile #f) diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm index f57981511a..46104cfb19 100644 --- a/guix/build/haskell-build-system.scm +++ b/guix/build/haskell-build-system.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2015 Paul van der Walt -;;; Copyright © 2018 Ricardo Wurmus +;;; Copyright © 2018, 2020 Ricardo Wurmus ;;; Copyright © 2018 Alex Vong ;;; ;;; 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)))) '()))) -(define* (install #:rest empty) +(define* (install #:key outputs #:allow-other-keys) "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) "Given a regular-expression RX including a group, read from PORT until the