rekado pushed a commit to branch wip-haskell-updates
in repository guix.

commit 9e86e4b61b2bfe1d38b4d26eef1ac9c37c577d14
Author: Ricardo Wurmus <[email protected]>
AuthorDate: Fri Jun 26 15:17:31 2020 +0200

    gnu: ghc-8.6: Remove unnecessary references.
    
    * gnu/packages/haskell.scm (ghc-8.6)[arguments]: Add phase
    "remove-unnecessary-references" to remove references to build tools and
    inter-output references.
---
 gnu/packages/haskell.scm | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 78cb895..09732fc 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2016, 2017 Nikita <[email protected]>
 ;;; Copyright © 2016 Efraim Flashner <[email protected]>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus 
<[email protected]>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus 
<[email protected]>
 ;;; Copyright © 2016, 2017 David Craven <[email protected]>
 ;;; Copyright © 2017 Danny Milosavljevic <[email protected]>
 ;;; Copyright © 2017 Peter Mikkelsen <[email protected]>
@@ -568,6 +568,32 @@ interactive environment for the functional language 
Haskell.")
                ,make-flags))
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
+           (add-after 'install 'remove-unnecessary-references
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* (find-files (string-append (assoc-ref outputs 
"out") "/lib/")
+                                        "settings")
+                 (("/gnu/store/.*/bin/(.*)" m program) program))
+
+               ;; Remove references to "doc" output from "out" by rewriting
+               ;; the "haddock-interfaces" fields and removing the optional
+               ;; "haddock-html" field in the generated .conf files.
+               (let ((doc (assoc-ref outputs "doc"))
+                     (out (assoc-ref outputs "out")))
+                 (with-fluids ((%default-port-encoding #f))
+                   (for-each (lambda (config-file)
+                               (substitute* config-file
+                                 (("^haddock-html: .*") "\n")
+                                 (((format #f "^haddock-interfaces: ~a" doc))
+                                  (string-append "haddock-interfaces: " out))))
+                             (find-files (string-append out "/lib") ".conf")))
+                 ;; Move the referenced files to the "out" output.
+                 (for-each (lambda (haddock-file)
+                             (let* ((subdir (string-drop haddock-file 
(string-length doc)))
+                                    (new    (string-append out subdir)))
+                               (mkdir-p (dirname new))
+                               (rename-file haddock-file new)))
+                           (find-files doc "\\.haddock$")))
+               #t))
            (add-after 'unpack-testsuite 'skip-tests
              (lambda _
                ;; These two tests refer to the root user, which doesn't exist

Reply via email to