summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Orlitzky <mjo@gentoo.org>2021-03-31 08:42:19 -0400
committerMichael Orlitzky <mjo@gentoo.org>2021-04-01 17:48:37 -0400
commit320334104e3e56e4fff1f1f821e74f7a122dfd57 (patch)
tree2ac46098dc1c8840c53009f29b3e7ce30fc8bd44 /sci-mathematics
parentgames-strategy/wesnoth: Bump to version 1.15.11. Removed old (diff)
downloadgentoo-320334104e3e56e4fff1f1f821e74f7a122dfd57.tar.gz
gentoo-320334104e3e56e4fff1f1f821e74f7a122dfd57.tar.bz2
gentoo-320334104e3e56e4fff1f1f821e74f7a122dfd57.zip
sci-mathematics/giac: new package for the Giac/Xcas math systems.
We have bugzilla requests for this package going back to 2005! The SageMath suite has recently gained the ability to use Giac from the system, so now is an especially good time to add it to the tree. François Bissey has been maintaining this package for years in the sage-on-gentoo overlay and contributing fixes upstream, so the ebuild required only minor changes at this point. I personally thank him and you should too. Closes: https://bugs.gentoo.org/94539 Closes: https://bugs.gentoo.org/94542 Closes: https://bugs.gentoo.org/760684 Package-Manager: Portage-3.0.13, Repoman-3.0.2 Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'sci-mathematics')
-rw-r--r--sci-mathematics/giac/Manifest1
-rw-r--r--sci-mathematics/giac/files/giac-1.6.0-pari-2.11.patch17
-rw-r--r--sci-mathematics/giac/files/giac-1.7.0.1-gsl_lapack.patch84
-rw-r--r--sci-mathematics/giac/giac-1.7.0.1.ebuild163
-rw-r--r--sci-mathematics/giac/metadata.xml39
5 files changed, 304 insertions, 0 deletions
diff --git a/sci-mathematics/giac/Manifest b/sci-mathematics/giac/Manifest
new file mode 100644
index 000000000000..a0c47413436f
--- /dev/null
+++ b/sci-mathematics/giac/Manifest
@@ -0,0 +1 @@
+DIST giac_1.7.0-1.tar.gz 82118267 BLAKE2B a9bb4cb260bfc7ba187907d054c737aa8f5de7baf132913dac2a054e886ec632d9077a52fb1e837a1db623223199592407734857725ee4b22c775f928893bb9d SHA512 05565ee22f4d81a4149935df9a32dc78ac07d06db1555a3d951169d184c746c61cd4d57407eabeb982fb8cb5b4a82726b5a553e6a9e689517a241eb0a8726929
diff --git a/sci-mathematics/giac/files/giac-1.6.0-pari-2.11.patch b/sci-mathematics/giac/files/giac-1.6.0-pari-2.11.patch
new file mode 100644
index 000000000000..24142257a340
--- /dev/null
+++ b/sci-mathematics/giac/files/giac-1.6.0-pari-2.11.patch
@@ -0,0 +1,17 @@
+Change test output for PARI 2.11
+
+See https://trac.sagemath.org/ticket/25567
+and https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=2102
+
+diff -ru a/check/TP11-sol.cas.out1 b/check/TP11-sol.cas.out1
+--- a/check/TP11-sol.cas.out1 2014-10-21 10:51:48.000000000 +0200
++++ b/check/TP11-sol.cas.out1 2018-08-07 17:04:12.528052773 +0200
+@@ -10,7 +10,7 @@
+ 1073741824000000000000000000061203284109000000000000000000000000008409,
+ 2^3*3*389*733*156904374622257604823879982847602392900751802349981470895277241,
+ "Done",
+-matrix[[2,7,1],[3,2,1],[389,2,1],[733,2,1],[156904374622257604823879982847602392900751802349981470895277241,2,matrix[[2,13,1],[3,3,1],[5,2,1],[7,2,1],[56467,2,1],[6553084925887974620811527,2,matrix[[2,5,1],[19,2,1],[71,2,1],[126823,2,1]]]]]],
++1,
+ 0,
+ [],
+ 1,
diff --git a/sci-mathematics/giac/files/giac-1.7.0.1-gsl_lapack.patch b/sci-mathematics/giac/files/giac-1.7.0.1-gsl_lapack.patch
new file mode 100644
index 000000000000..073762ec6a47
--- /dev/null
+++ b/sci-mathematics/giac/files/giac-1.7.0.1-gsl_lapack.patch
@@ -0,0 +1,84 @@
+diff --git a/configure.ac b/configure.ac
+index 44fd519..0a6bad7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -38,6 +38,7 @@ AC_LANG([C++])
+ AC_PROG_LIBTOOL
+ AC_PROG_YACC
+ AM_PROG_LEX
++PKG_PROG_PKG_CONFIG
+ AC_C_BIGENDIAN
+
+ dnl Check for standard C+headers
+@@ -225,47 +226,17 @@ AC_CHECK_SIZEOF(long)
+ AC_CHECK_SIZEOF(long long)
+
+ dnl Checking for Gnu Sci Lib
+-CONFIG_GSL="yes"
+-AC_ARG_ENABLE([gsl],[
+- AS_HELP_STRING([--enable-gsl], [Use GNU scientific library [[default=yes]]])],
+- [ if test "x$enableval" = "xno"; then CONFIG_GSL="no"; fi], [])
+-
+-if test "$CONFIG_GSL" = "yes"; then
+- AC_CHECK_HEADERS(gsl/gsl_blas.h)
+- AC_CHECK_HEADERS(gsl/gsl_eigen.h)
+- if test "$ac_cv_header_gsl_gsl_blas_h" != "yes" -o "$ac_cv_header_gsl_gsl_eigen_h" != "yes"; then
+- CONFIG_GSL="no"
+- fi
+-fi
+-if test "$CONFIG_GSL" = "yes"; then
+- save_LIBS="$LIBS"
+- AC_CHECK_LIB(gslcblas, main, [], [CONFIG_GSL="no"])
+- AC_CHECK_LIB(gsl, gsl_sf_gamma, [], [CONFIG_GSL="no"])
+- LIBS="$save_LIBS"
+- fi
+-GSL_LIBS=""
+-if test "$CONFIG_GSL" = "yes"; then
+- GSL_LIBS="-lgsl -lgslcblas"
+- fi
+-AC_SUBST(CONFIG_GSL)
+-AC_SUBST(GSL_LIBS)
+-AM_CONDITIONAL(CONFIG_GSL, [test "$CONFIG_GSL" = "yes"])
+-
+-CONFIG_LAPACK="yes"
+-AC_ARG_ENABLE([lapack],
+- [AS_HELP_STRING([--enable-lapack], [Use LAPACK [[default=yes]]])],
+- [ if test "$enableval" = "no"; then CONFIG_LAPACK="no"; fi], [])
+-
+-if test "$CONFIG_LAPACK" = "yes"; then
+-# AC_CHECK_LIB(f2c, main, [], [CONFIG_LAPACK="no"])
+-# AC_CHECK_LIB(blas, main, [], [CONFIG_LAPACK="no"])
+-# AC_CHECK_LIB(tmglib, main, [], [CONFIG_LAPACK="no"])
+- AC_CHECK_LIB(gfortran, main)
+- AC_CHECK_LIB(blas, main)
+- AC_CHECK_LIB(lapack, main, [], [CONFIG_LAPACK="no"])
+-# AX_BLAS([have_blas=yes],[have_blas=no])
+-# AX_LAPACK([have_lapack=yes],[have_lapack=no])
+-fi
++PKG_CHECK_MODULES([GSL], [gsl],[
++ AC_DEFINE(HAVE_LIBGSL,1, [Define if gsl is installed])
++ AC_SUBST(GSL_LIBS)])
++
++PKG_CHECK_MODULES([LAPACK], [lapack],[
++ AC_DEFINE(HAVE_LIBLAPACK,1,[Define if LAPACK is installed])
++ AC_SUBST(LAPACK_LIBS)])
++
++PKG_CHECK_MODULES([BLAS], [blas],[
++ AC_DEFINE(HAVE_BLAS,1,[Define if BLAS is installed])
++ AC_SUBST(BLAS_LIBS)])
+
+ dnl if test "$CONFIG_PARI" = "yes"; then
+ dnl AC_MSG_CHECKING([whether PARI is configured with pthreads])
+diff --git a/src/Makefile.am b/src/Makefile.am
+index bb77986..d385fd0 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -16,7 +16,7 @@ libgiac_la_SOURCES = input_lexer.ll sym2poly.cc gausspol.cc threaded.cc \
+ caseval.c cutils.c graphic.c libbf.c libregexp.c libunicode.c \
+ qjsgiac.c quickjs.c quickjs-libc.c js.c
+
+-libgiac_la_LIBADD = $(NTL_LIBS) $(COCOA_LIBS) $(PARI_LIBS) $(GSL_LIBS)
++libgiac_la_LIBADD = $(NTL_LIBS) $(COCOA_LIBS) $(PARI_LIBS) $(GSL_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS)
+
+ giacincludedir = $(includedir)/giac
+ giacinclude_HEADERS = dispatch.h fraction.h gen.h desolve.h misc.h ti89.h \
diff --git a/sci-mathematics/giac/giac-1.7.0.1.ebuild b/sci-mathematics/giac/giac-1.7.0.1.ebuild
new file mode 100644
index 000000000000..78894fa8a1e7
--- /dev/null
+++ b/sci-mathematics/giac/giac-1.7.0.1.ebuild
@@ -0,0 +1,163 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic xdg-utils
+
+FETCH_P="${PN}_"$(ver_rs 3 '-')
+MY_PV=$(ver_cut 1-3)
+DESCRIPTION="A free C++ Computer Algebra System library and its interfaces"
+HOMEPAGE="https://www-fourier.ujf-grenoble.fr/~parisse/giac.html"
+SRC_URI="https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/${FETCH_P}.tar.gz"
+LICENSE="GPL-2"
+
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+LANGS="el en es pt"
+IUSE="ao doc +ecm examples gc +glpk gui static-libs test"
+for X in ${LANGS} ; do
+ IUSE="${IUSE} l10n_${X}"
+done
+
+# nauty and cliquer are automagical dependencies
+RDEPEND="dev-libs/gmp:=[cxx]
+ sys-libs/readline:=
+ gui? ( x11-libs/fltk
+ media-libs/libpng:= )
+ ao? ( media-libs/libao )
+ dev-libs/mpfr:=
+ sci-libs/mpfi
+ sci-libs/gsl:=
+ sci-mathematics/pari:=[threads]
+ dev-libs/ntl:=
+ virtual/lapack
+ virtual/blas
+ net-misc/curl
+ sci-mathematics/cliquer
+ sci-mathematics/nauty
+ ecm? ( sci-mathematics/gmp-ecm )
+ glpk? ( sci-mathematics/glpk )
+ gc? ( dev-libs/boehm-gc )"
+
+DEPEND="${RDEPEND}"
+
+BDEPEND="dev-tex/hevea
+ virtual/pkgconfig
+ virtual/yacc"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.7.0.1-gsl_lapack.patch"
+ "${FILESDIR}/${PN}-1.6.0-pari-2.11.patch"
+)
+
+REQUIRED_USE="test? ( gui )"
+
+# The mirror restriction is due to the French documentation for which
+# "Other kind of redistributions require the consent of the copyright
+# holder."
+RESTRICT="!test? ( test ) mirror"
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+src_prepare(){
+ default
+ eautoreconf
+}
+
+src_configure(){
+ if use gui; then
+ append-cppflags -I$(fltk-config --includedir)
+ append-lfs-flags
+
+ # Get the big-L flags from fltk's LDFLAGS.
+ append-ldflags $(fltk-config --ldflags | sed -e 's/\(-L\S*\)\s.*/\1/')
+ fi
+
+ # Using libsamplerate is currently broken
+ #
+ # The giac build system supports --docdir, but the path /usr/share/giac/doc
+ # is hard-coded throughout the source code, so passing anything else to
+ # ./configure --docdir just causes problems. Later, we'll put things right.
+ #
+ # micropython is for specific use in an upstream project
+ econf \
+ --enable-gmpxx \
+ --disable-samplerate \
+ --disable-micropy \
+ --docdir=/usr/share/giac/doc \
+ $(use_enable static-libs static) \
+ $(use_enable gui) \
+ $(use_enable gui png) \
+ $(use_enable ao) \
+ $(use_enable ecm) \
+ $(use_enable glpk) \
+ $(use_enable gc)
+
+}
+
+src_install() {
+ docompress -x "/usr/share/doc/${PF}/"{aide_cas,doc,examples}
+ emake install DESTDIR="${D}"
+
+ # Move all of /usr/share/giac (which contains only documentation) to
+ # its /usr/share/doc/${PF} counterpart.
+ dodir /usr/share/doc
+ mv "${ED}"/usr/share/giac "${ED}/usr/share/doc/${PF}" || die
+
+ # and create a symlink from the original location to the new one
+ dosym "./doc/${PF}" /usr/share/giac
+
+ # This is duplicated in ${ED}/usr/share/doc/${PF}/examples
+ rm -r "${ED}/usr/share/doc/${PF}/doc/Exemples" || die
+
+ # These aren't supposed to be installed at all.
+ find "${ED}/usr/share/doc/${PF}" -type f -name 'Makefile*' -delete || die
+
+ # The French docs are not freely licensed according to the README.
+ rm -r "${ED}/usr/share/doc/${PF}/doc/fr" || die
+
+ dodoc AUTHORS ChangeLog INSTALL NEWS README TROUBLES
+ if ! use gui; then
+ rm -rf \
+ "${ED}"/usr/bin/x* \
+ "${ED}"/usr/share/application-registry \
+ "${ED}"/usr/share/applications \
+ "${ED}"/usr/share/icons \
+ || die "failed to clean up fltk files"
+ fi
+
+ if ! use doc; then
+ rm -r "${ED}/usr/share/doc/${PF}/doc" || die "failed to remove doc directory"
+ else
+ for lang in ${LANGS}; do
+ if use l10n_$lang; then
+ dosym ../aide_cas "/usr/share/doc/${PF}/doc/${lang}/aide_cas"
+ else
+ rm -r "${ED}/usr/share/giac/doc/${lang}" \
+ || die "failed to remove ${lang} documentation"
+ fi
+ done
+ fi
+
+ if ! use examples; then
+ rm -r "${ED}/usr/share/doc/${PF}/examples" \
+ || die "failed to remove examples"
+ fi
+
+ find "${ED}" -type f -name '*.la' -delete || die
+}
+
+pkg_postinst(){
+ if use gui; then
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ fi
+}
+
+pkg_postrm(){
+ if use gui; then
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ fi
+}
diff --git a/sci-mathematics/giac/metadata.xml b/sci-mathematics/giac/metadata.xml
new file mode 100644
index 000000000000..3fadb3c53b01
--- /dev/null
+++ b/sci-mathematics/giac/metadata.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+
+ <maintainer type="person">
+ <email>mjo@gentoo.org</email>
+ </maintainer>
+
+ <maintainer type="person" proxied="yes">
+ <email>frp.bissey@gmail.com</email>
+ <name>Francois Bissey</name>
+ </maintainer>
+
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+
+ <maintainer type="project">
+ <email>sci-mathematics@gentoo.org</email>
+ <name>Gentoo Mathematics Project</name>
+ </maintainer>
+
+ <longdescription>
+ Giac is a free computer algebra system that can be used to perform
+ computer algebra, function graphs, interactive geometry (2-d and
+ 3-d), spreadsheet and statistics, programmation. It may be used as
+ a replacement for high end graphic calculators for example on
+ netbooks (for about the same price as a calculator but with much
+ more performances).
+ </longdescription>
+
+ <use>
+ <flag name="glpk">Enable the use of <pkg>sci-mathematics/glpk</pkg></flag>
+ <flag name="ecm">Enable the use of <pkg>sci-mathematics/gmp-ecm</pkg></flag>
+ <flag name="gc">Enable garbage collection support via <pkg>dev-libs/boehm-gc</pkg></flag>
+ </use>
+
+</pkgmetadata>