summary refs log tree commit diff
path: root/gnu/packages/sagemath.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/sagemath.scm')
-rw-r--r--gnu/packages/sagemath.scm65
1 files changed, 65 insertions, 0 deletions
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index 63d1281668..7517b55175 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -24,6 +24,7 @@
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bdw-gc)
@@ -353,3 +354,67 @@ Boolean variables.  As a unique approach, binary decision diagrams are
 used as internal storage type for polynomial structures.")
     (license license:gpl2+)
     (home-page "https://gitlab.com/sagemath/zn_poly")))
+
+(define-public lcalc
+  (package
+    (name "lcalc")
+    (version "1.23")
+    ;; The original home page of the project has disappeared, as well as
+    ;; code hosted by the original author on Google Code. The latter has
+    ;; been copied to gitlab.com/sagemath and purportedly contains patches
+    ;; for a never released version 1.3, that supposedly follows 1.23.
+    ;; We use the tarball as well as the patches hosted inside the sage
+    ;; package system distributed with the sage tarball.
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "ftp://ftp.fu-berlin.de/unix/misc/sage/spkg/"
+                           "upstream/lcalc/lcalc-1.23.tar.bz2"))
+       (sha256
+        (base32
+         "1c6dsdshgxhqppjxvxhp8yhpxaqvnz3d1mlh26r571gkq8z2bm43"))
+       (patches (search-patches "lcalc-lcommon-h.patch"
+                                "lcalc-default-parameters-1.patch"
+                                "lcalc-default-parameters-2.patch"
+                                "lcalc-using-namespace-std.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'prepare-build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "src")
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("^INSTALL_DIR= /usr/local")
+                  (string-append "INSTALL_DIR=" out))
+                 ;; Sage renames the include directory, so we do it also.
+                 (("include/Lfunction")
+                  "include/libLfunction")
+                 ;; Add --std=c++11 to be compatible with the "auto" keyword
+                 ;; introduced by lcalc-using-namespace-std.patch.
+                 (("^#EXTRA= -pg")
+                  "EXTRA=--std=c++11")))
+             #t))
+         (add-before 'install 'make-output-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lib (string-append out "/lib"))
+                    (include (string-append out "/include")))
+               (mkdir-p bin)
+               (mkdir-p lib)
+               (mkdir-p include))
+             #t)))))
+    ;; FIXME:
+    ;; We need to add pari-gp and probably pari related patches from the
+    ;; sage project, as well as uncomment the line setting PARI_DEFINE in
+    ;; the Makefile to get the full functionality of this package.
+    ;; For the time being, we hope that sage can be compiled without.
+    (synopsis "C++ library for L-functions")
+    (description "Lcalc computes L-functions, in particular the Riemann
+zeta function and its twists by quadratic characters.")
+    (license license:gpl2+)
+    (home-page "https://gitlab.com/sagemath/sage")))