Subject: [PATCH v3 21/24] gnu: Add ghc-shake-bootstrap-for-9.6

From: Nicolas Graves <[email-masked]>
Date: Thu, 31 Oct 2024 13:47:00 +0100

From: Saku Laesvuori <[email-masked]>

* gnu/packages/haskell.scm (ghc-shake-bootstrap-for-9.6): New variable.

Change-Id: I195bc5f779709ef7b2ccefe2271402ef342bc0b8
---
 gnu/packages/haskell.scm | 56 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 0ffc4df728..4bd1ef150b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1612,6 +1612,62 @@ (define-public ghc-9.4
 
 (define ghc-bootstrap-for-9.6 ghc-9.4)
 
+(define ghc-shake-bootstrap-for-9.6
+  (package
+    (name "ghc-shake-bootstrap")
+    (version "0.19.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "shake" version))
+       (sha256
+        (base32 "1lcr6q53qwm308bny6gfawcjhxsmalqi3dnwckam02zp2apmcaim"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "shake")))
+    (inputs (list bash-minimal
+                  ghc-extra-bootstrap-for-9.6
+                  ghc-filepattern-bootstrap-for-9.6
+                  ghc-hashable-bootstrap-for-9.6
+                  ghc-heaps-bootstrap-for-9.6
+                  ghc-js-dgtable-bootstrap-for-9.6
+                  ghc-js-flot-bootstrap-for-9.6
+                  ghc-js-jquery-bootstrap-for-9.6
+                  ghc-primitive-bootstrap-for-9.6
+                  ghc-random-bootstrap-for-9.6
+                  ghc-unordered-containers-bootstrap-for-9.6
+                  ghc-utf8-string-bootstrap-for-9.6
+                  ghc-semigroups-bootstrap-for-9.6))
+    (arguments
+     (list #:cabal-revision '("1"
+                              "1hz57kw5pp5cpbicbi7x8sz8c6qy58dzyiljz9b9f2r1rr683d9w")
+           #:tests? #f
+           #:haskell ghc-bootstrap-for-9.6
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'patch-source-shebangs 'patch-/bin/sh
+                 (lambda _
+                   (for-each
+                    (lambda (file)
+                      (substitute*
+                       file
+                       (("/bin/sh")
+                        #$(file-append (this-package-input "bash-minimal")
+                                       "/bin/sh"))))
+                    '("src/Development/Shake/Command.hs")))))))
+    (home-page "https://shakebuild.com")
+    (synopsis
+     "Build system library, like Make, but more accurate dependencies.")
+    (description
+     "Shake is a Haskell library for writing build systems - designed as a
+replacement for @@make@@.  To use Shake the user writes a Haskell program that
+imports \"Development.Shake\", defines some build rules, and calls the
+Development.Shake.@code{shakeArgs} function.  However, as build systems get more
+complex, Shake is able to take advantage of the excellent abstraction facilities
+offered by Haskell and easily support much larger projects.  Shake also provides more
+accurate dependency tracking, including seamless support for generated files, and
+dependencies on system information (e.g. compiler version).")
+    (license license:bsd-3)))
+
 (define ghc-js-flot-bootstrap-for-9.6
   (package
     (name "ghc-js-flot-bootstrap")
-- 
2.46.0