Subject: [PATCH 2/4] gnu: Add chuffed.

From: Herman Rimm <[email-masked]>
Date: Sat, 30 Mar 2024 12:42:39 +0100

* gnu/packages/maths.scm (chuffed): Add variable.

Change-Id: I77fc1ceb9caa42833689fba771010aeb38443e5e
---
 gnu/packages/maths.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6c23aa3562..0c08851616 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -306,6 +306,43 @@ (define-public calc
     (home-page "http://www.isthe.com/chongo/tech/comp/calc/")
     (license license:lgpl2.1)))
 
+(define-public chuffed
+  (package
+    (name "chuffed")
+    (version "0.13.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/chuffed/chuffed")
+                     (commit version)))
+              (sha256
+               (base32
+                "1c28q166qh84q4i5wz77fqvw7kld3fmhd245sgdvyxcbjpi2wr0m"))))
+    (build-system cmake-build-system)
+    (synopsis "Lazy clause generation solver")
+    (arguments '(#:tests? #f ; no 'check' target
+                 #:modules ((guix build cmake-build-system)
+                            (guix build utils))
+                 #:phases
+                 (modify-phases %standard-phases
+                   (add-before 'build 'patch-msc
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let ((out (assoc-ref outputs "out")))
+                         (substitute* "chuffed.msc"
+                           ;; TODO: Replace fzn-chuffed and chuffed path
+                           ;; before build.
+                           (("\\.\\./../..") out)
+                           (("\\.\\.")
+                            (string-append
+                              out "/share/minizinc")))))))))
+    (description
+     "Chuffed is a state of the art lazy clause solver designed from the
+ground up with lazy clause generation in mind.  Lazy clause generation
+is a hybrid approach to constraint solving that combines features of
+finite domain propagation and Boolean satisfiability.")
+    (home-page "https://github.com/chuffed/chuffed")
+    (license license:expat)))
+
 (define-public coda
   (package
     (name "coda")
-- 
2.41.0