summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorAndreas Enge <andreas@enge.fr>2015-05-16 21:07:53 +0200
committerAndreas Enge <andreas@enge.fr>2015-05-20 23:21:50 +0200
commit7f18257bead9e2f1f8d121ab290b79cf6ddc0018 (patch)
tree9029f7548138ceb5a22631081d5f12e2ac14542b /gnu/packages
parent3a6fb858ad95dd422b2519d5862d5db61deeb2a5 (diff)
gnu: Add lpsolve.
* gnu/packages/maths.scm (lpsolve): New variable.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/maths.scm69
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 519ef68794..89e0a17ab1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1345,3 +1345,72 @@ library with poor performance.")
library for graphics software based on the OpenGL Shading Language (GLSL)
specifications.")
(license license:expat)))
+
+(define-public lpsolve
+ (package
+ (name "lpsolve")
+ (version "5.5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/lpsolve/lpsolve/" version
+ "/lp_solve_" version "_source.tar.gz"))
+ (sha256
+ (base32
+ "176c7f023mb6b8bfmv4rfqnrlw88lsg422ca74zjh19i2h5s69sq"))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc")
+ (("^c=cc") "c=gcc")
+ ;; Pretend to be on a 64 bit platform to obtain a common directory
+ ;; name for the build results on all architectures; nothing else
+ ;; seems to depend on it.
+ (("^PLATFORM=.*$") "PLATFORM=ux64\n")))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (with-directory-excursion "lpsolve55"
+ (system* "bash" "ccc"))
+ (with-directory-excursion "lp_solve"
+ (system* "bash" "ccc"))
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ ;; This is where LibreOffice expects to find the header
+ ;; files, and where they are installed by Debian.
+ (include (string-append out "/include/lpsolve")))
+ (mkdir-p lib)
+ (copy-file "lpsolve55/bin/ux64/liblpsolve55.a"
+ (string-append lib "/liblpsolve55.a"))
+ (copy-file "lpsolve55/bin/ux64/liblpsolve55.so"
+ (string-append lib "/liblpsolve55.so"))
+ (mkdir-p bin)
+ (copy-file "lp_solve/bin/ux64/lp_solve"
+ (string-append bin "/lp_solve"))
+ (mkdir-p include)
+ ;; Install a subset of the header files as on Debian
+ ;; (plus lp_bit.h, which matches the regular expression).
+ (for-each
+ (lambda (name)
+ (copy-file name (string-append include "/" name)))
+ (find-files "." "lp_[HMSa-z].*\\.h$"))
+ (with-directory-excursion "shared"
+ (for-each
+ (lambda (name)
+ (copy-file name (string-append include "/" name)))
+ (find-files "." "\\.h$")))
+ #t))))))
+ (home-page "http://lpsolve.sourceforge.net/")
+ (synopsis "Mixed integer linear programming (MILP) solver")
+ (description
+ "lp_solve is a mixed integer linear programming solver based on the
+revised simplex and the branch-and-bound methods.")
+ (license license:lgpl2.1+)))