diff mbox series

[bug#41995,1/2] gnu: Add symengine.

Message ID 20200622010155.17641-1-monego@posteo.net
State Accepted
Headers show
Series [bug#41995,1/2] gnu: Add symengine. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Vinicius Monego June 22, 2020, 1:01 a.m. UTC
* gnu/packages/algebra.scm (symengine): New variable.
---
 gnu/packages/algebra.scm | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

Comments

Nicolas Goaziou June 24, 2020, 6:57 a.m. UTC | #1
Hello,

Vinicius Monego <monego@posteo.net> writes:

> * gnu/packages/algebra.scm (symengine): New variable.

Thank you.

I couldn't build it because gperftools currently has a failing test.

> +     '(#:configure-flags
> +       '("-DCMAKE_BUILD_TYPE=Release"
> +         "-DWITH_GMP=on"
> +         "-DWITH_MPFR=on"
> +         "-DWITH_MPC=on"
> +         "-DINTEGER_CLASS=flint"
> +         "-DWITH_LLVM=on"
> +         "-DWITH_SYMENGINE_THREAD_SAFE=on"

IIUC correctly, these are the suggested build options in the README. It
may be worth adding a comment about it since this looks a bit
opinionated.

> +         "-DWITH_TCMALLOC=on")))

This does not belong to the set of suggested build options. Is there
a particular reason to activate it? If so, would it make sense to add
a comment about it?

I also see there is a "BUILD_SHARED_LIBS" flag, off by default. Would it
make sense to activate it?

> +    (license (list license:expat     ;; SymEngine.
> +                   license:bsd-3)))) ;; Third party code.

In both comments, there should be a single semicolon and no full stop.

Could you send an updated patch?

Regards,
Vinicius Monego June 24, 2020, 1:39 p.m. UTC | #2
Hello Nicolas,

> +         "-DWITH_TCMALLOC=on")))
> 
> This does not belong to the set of suggested build options. Is there
> a particular reason to activate it? If so, would it make sense to add
> a comment about it?

That was part of the optimized build suggestions. I removed it, since
this feature is provided by gperftools and it's causing trouble.

> I also see there is a "BUILD_SHARED_LIBS" flag, off by default. Would
> it
> make sense to activate it?

The shared library is used by the Julia wrapper. I noticed that we have
a Julia build system, so I enabled this too.

The other suggestions were also applied.
Nicolas Goaziou June 24, 2020, 5:49 p.m. UTC | #3
Hello,

Vinicius Monego <monego@posteo.net> writes:

> The other suggestions were also applied.

I applied both patches. I had to fix indentation. You may want to find
out why it was off.

Thank you!

Regards,
diff mbox series

Patch

diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index b78e6ef304..ec381ac708 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -12,6 +12,7 @@ 
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@ 
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages java)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
@@ -946,6 +948,46 @@  minimization and curve fitting.  It is mature code, based on decades-old
 algorithms from the FORTRAN library MINPACK.")
     (license license:bsd-2)))
 
+(define-public symengine
+  (package
+    (name "symengine")
+    (version "0.6.0")
+    (source
+     (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/symengine/symengine.git")
+            (commit (string-append "v" version))))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32 "129iv9maabmb42ylfdv0l0g94mcbf3y4q3np175008rcqdr8z6h1"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       '("-DCMAKE_BUILD_TYPE=Release"
+         "-DWITH_GMP=on"
+         "-DWITH_MPFR=on"
+         "-DWITH_MPC=on"
+         "-DINTEGER_CLASS=flint"
+         "-DWITH_LLVM=on"
+         "-DWITH_SYMENGINE_THREAD_SAFE=on"
+         "-DWITH_TCMALLOC=on")))
+    (native-inputs
+     `(("gperftools" ,gperftools)
+       ("llvm" ,llvm)))
+    (inputs
+     `(("flint" ,flint)
+       ("gmp" ,gmp)
+       ("mpc" ,mpc)
+       ("mpfr" ,mpfr)))
+    (home-page "https://github.com/symengine/symengine")
+    (synopsis "Fast symbolic manipulation library")
+    (description "SymEngine is a standalone fast C++ symbolic manipulation
+library.  Optional thin wrappers allow usage of the library from other
+languages.")
+    (license (list license:expat     ;; SymEngine.
+                   license:bsd-3)))) ;; Third party code.
+
 (define-public eigen
   (package
     (name "eigen")