~ruther/guix-local

93cef6e768293225654bef4d0562268bdfe63e79 — Liliana Marie Prikler 5 years ago 45e132e
gnu: Add gecode.

* gnu/packages/maths.scm (gecode): New variable.
1 files changed, 71 insertions(+), 0 deletions(-)

M gnu/packages/maths.scm
M gnu/packages/maths.scm => gnu/packages/maths.scm +71 -0
@@ 2045,6 2045,77 @@ linear and quadratic objectives.  There are limited facilities for nonlinear
and quadratic objectives using the Simplex algorithm.")
    (license license:epl1.0)))

(define-public gecode
  (package
    (name "gecode")
    (version "6.2.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/Gecode/gecode")
                    (commit (string-append "release-" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0b1cq0c810j1xr2x9y9996p894571sdxng5h74py17c6nr8c6dmk"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  ;; delete generated sources
                  (for-each delete-file
                            '("gecode/kernel/var-imp.hpp"
                              "gecode/kernel/var-type.hpp"))))))
    (outputs '("out" "examples"))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list (string-append "GLDFLAGS=-Wl,-rpath="
                            (assoc-ref %outputs "out")
                            "/lib")
             "--enable-examples=no")
       #:modules ((guix build gnu-build-system)
                  (guix build utils)
                  (ice-9 rdelim)
                  (ice-9 popen))
       #:phases
       (modify-phases %standard-phases
         (add-after 'build 'build-examples
           (lambda* (#:key outputs #:allow-other-keys)
             (invoke "make" "compileexamples")))
         ;; The Makefile disrespects GLDFLAGS for some reason, so we have to
         ;; patch it ourselves... *sigh*
         (add-after 'install 'fix-rpath
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((libdir (string-append (assoc-ref outputs "out") "/lib")))
               (for-each
                (lambda (file)
                  (let* ((pipe (open-pipe* OPEN_READ "patchelf"
                                          "--print-rpath" file))
                         (line (read-line pipe)))
                    (and (zero? (close-pipe pipe))
                         (invoke "patchelf" "--set-rpath"
                                 (string-append libdir ":" line)
                                 file))))
                (find-files libdir ".*\\.so$")))))
         (add-after 'install 'install-examples
           (lambda* (#:key outputs #:allow-other-keys)
             (invoke "make" "installexamples"
                     (string-append "bindir=" (assoc-ref outputs "examples")
                                    "/bin"))))
         ;; Tests depend on installed libraries.
         (delete 'check)
         (add-after 'fix-rpath 'check
           (assoc-ref %standard-phases 'check)))))
    (native-inputs
     `(("patchelf" ,patchelf)
       ("perl" ,perl)
       ("sed" ,sed)))
    (home-page "https://www.gecode.org")
    (synopsis "Toolkit for developing constraint-based systems")
    (description "Gecode is a C++ toolkit for developing constraint-based
systems and applications.  It provides a modular and extensible solver.")
    (license license:expat)))

(define-public libflame
  (package
    (name "libflame")