~ruther/guix-local

4b443b41f46dc7575a72bbf1c1ab615c661177fa — Herman Rimm 1 year, 9 months ago e170c51
gnu: gecode: Update to 6.2.0-1.f7f0d7c.

* gnu/packages/maths.scm (gecode): Update to 6.2.0-1.f7f0d7c.
[version]: Use version.
[arguments]: Add patch-msc-and-version phase.  Install examples to the
examples output again.
(minizinc)[arguments]: Copy provided gecode.msc file instead.

Change-Id: I5e89105f3fef61d6aa677a4a118225679220ce5d
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 43 insertions(+), 62 deletions(-)

M gnu/packages/maths.scm
M gnu/packages/maths.scm => gnu/packages/maths.scm +43 -62
@@ 2704,28 2704,26 @@ and quadratic objectives using the Simplex algorithm.")
    (license license:epl1.0)))

(define-public gecode
  ;; The current release is not compatible with minizinc anymore.
  ;; Use a commit that has been tested with minizinc.
  (let ((commit "2d20e88cae176584b6e09d909aca3eb72ae76829")
        (revision "2"))
  (let* ((commit "f7f0d7c273d6844698f01cec8229ebe0b66a016a")
         (version (git-version "6.2.0" "1" commit)))
    (package
      (name "gecode")
      (version (git-version "6.2.0" revision commit))
      (version version)
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/Gecode/gecode")
               (commit commit)))
                (url "https://github.com/Gecode/gecode")
                (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0hf7hd7m5p26xwn8f561f0gn2a6q33xz818jg3ivmvp2ysmmmm4r"))
          (base32
            "16gzwa64w90vifaflmii515rsrqclf2y7nziq621m4ad9cjgcixj"))
         (modules '((guix build utils)))
         (snippet '(begin
                     ;; delete generated sources
                     (for-each delete-file
                               '("gecode/kernel/var-imp.hpp"
                                 "gecode/kernel/var-type.hpp"))))))
         ;; delete generated sources
         (snippet '(for-each delete-file
                             '("gecode/kernel/var-imp.hpp"
                               "gecode/kernel/var-type.hpp")))))
      (outputs '("out" "examples"))
      (build-system gnu-build-system)
      (arguments


@@ 2739,6 2737,16 @@ and quadratic objectives using the Simplex algorithm.")
                    (ice-9 popen))
        #:phases
        #~(modify-phases %standard-phases
            (add-before 'configure 'patch-msc-and-version
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
                  (substitute* "tools/flatzinc/gecode.msc.in"
                    (("\\.\\./../..") out)
                    (("\\.\\.")
                     (string-append out "/share/minizinc")))
                  (substitute* "configure"
                    (("(PACKAGE_[^0-9]*)[0-9\\.]+" all match)
                     (string-append match #$version))))))
            (add-after 'build 'build-examples
              (lambda _
                (invoke "make" "compileexamples")))


@@ 2747,33 2755,27 @@ and quadratic objectives using the Simplex algorithm.")
            (add-after 'install 'fix-rpath
              (lambda _
                (let ((libdir (string-append #$output "/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$")))))
                  (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 _
                (invoke "make" "installexamples"
                        (string-append "bindir="
                                       #$output "/bin"))))
            ;; Tests depend on installed libraries.
            (delete 'check)
            (add-after 'fix-rpath 'check
              (assoc-ref %standard-phases
                         'check)))))
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((examples (assoc-ref outputs "examples"))
                       (bindir (format #f "bindir=~a/bin" examples)))
                  (invoke "make" "installexamples" bindir)))))))
      (native-inputs (list patchelf perl 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.")
        "Gecode is a C++ toolkit for developing constraint-based systems
and applications.  It provides a modular and extensible solver.")
      (license license:expat))))

(define-public libfixmath


@@ 4181,33 4183,12 @@ book.")
}"
                            port)
                   (newline port)))

               (copy-recursively
                 (string-append chuffed "/share/minizinc/solvers")
                 (string-append pkgdatadir "/solvers"))
               (call-with-output-file (string-append pkgdatadir
                                                     "/solvers/gecode.msc")
                 (lambda (port)
                   (format port
                    "\
{
  \"id\": \"org.gecode.gecode\",
  \"name\": \"Gecode\",
  \"description\": \"Gecode FlatZinc executable\",
  \"version\": ~s,
  \"mznlib\": ~s,
  \"executable\": ~s,
  \"supportsMzn\": false,
  \"supportsFzn\": true,
  \"needsSolns2Out\": true,
  \"needsMznExecutable\": false,
  \"needsStdlibDir\": false,
  \"isGUIApplication\": false
}"
                    (last (string-split gecode #\-))
                    (string-append gecode "/share/gecode/mznlib")
                    (string-append gecode "/bin/fzn-gecode"))
                   (newline port)))))))))
               (for-each
                 (lambda (solver)
                   (copy-recursively
                     (string-append solver "/share/minizinc/solvers")
                     (string-append pkgdatadir "/solvers")))
                 (list gecode chuffed))))))))
    (native-inputs
     (list bison flex))
    (inputs