Date: Sunday, November 4, 2018 @ 18:41:14 Author: arojas Revision: 401513
archrelease: copy trunk to community-x86_64 Added: maxima-ecl/repos/community-x86_64/PKGBUILD (from rev 401512, maxima-ecl/trunk/PKGBUILD) maxima-ecl/repos/community-x86_64/build-fasl.patch (from rev 401512, maxima-ecl/trunk/build-fasl.patch) maxima-ecl/repos/community-x86_64/matrixexp.patch (from rev 401512, maxima-ecl/trunk/matrixexp.patch) maxima-ecl/repos/community-x86_64/stack.patch (from rev 401512, maxima-ecl/trunk/stack.patch) Deleted: maxima-ecl/repos/community-x86_64/PKGBUILD maxima-ecl/repos/community-x86_64/build-fasl.patch maxima-ecl/repos/community-x86_64/matrixexp.patch ------------------+ PKGBUILD | 105 +++++++++++++++++++++++++++-------------------------- build-fasl.patch | 46 +++++++++++------------ matrixexp.patch | 26 ++++++------- stack.patch | 85 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 87 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2018-11-04 18:40:48 UTC (rev 401512) +++ PKGBUILD 2018-11-04 18:41:14 UTC (rev 401513) @@ -1,51 +0,0 @@ -# Maintainer: Antonio Rojas <aro...@archlinux.org> -# Contributor: Ronald van Haren <ronald.archlinux.org> -# Contributor: Damir Perisa <da...@archlinux.org> -# Modified to compile against ecl by: maribu - -pkgname=maxima-ecl -_pkgname=maxima -pkgver=5.42.1 -_eclver=16.1.2 -pkgrel=1 -pkgdesc="A sophisticated computer algebra system (compiled against ecl)" -arch=(x86_64) -license=(GPL) -url="https://maxima.sourceforge.net" -depends=(ecl-16.1.2 texinfo shared-mime-info) -makedepends=(python emacs patch) -optdepends=('gnuplot: plotting capabilities' 'rlwrap: readline support via /usr/bin/rmaxima' 'tk: graphical xmaxima interface') -conflicts=(maxima) -provides=(maxima) -options=(!zipman) # don't zip info pages or they won't work inside maxima -source=("https://downloads.sourceforge.net/sourceforge/${_pkgname}/${_pkgname}-${pkgver}.tar.gz" - 'build-fasl.patch' 'matrixexp.patch') -sha256sums=('8f555aec33bc61b5a3ee0fe2e9d6c1179db67a2ff7e0eceb6bb614058eeb40cd' - '90ced3b33361fa24c2b417e0aeba8956892f0965b4a22d57d0c04115f2a3274b' - 'ef1bc6a15fc982ff8c6aa1800bbbd3284d9e060ca27abf9d8c1266632c0c2619') - -prepare() { - cd $_pkgname-$pkgver - -# build maxima ecl library - patch -p1 -i ../build-fasl.patch -# fix matrix exponentiation - patch -p1 -i ../matrixexp.patch -} - -build() { - cd $_pkgname-$pkgver - - ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info \ - --libexecdir=/usr/lib --enable-ecl --with-default-lisp=ecl - make -} - -package() { - cd $_pkgname-$pkgver - make DESTDIR="$pkgdir" emacsdir=/usr/share/emacs/site-lisp/maxima install - - _ecldir="/usr/lib/ecl-$_eclver" - mkdir -p "$pkgdir/$_ecldir" - install src/binary-ecl/maxima.fas "$pkgdir/$_ecldir" -} Copied: maxima-ecl/repos/community-x86_64/PKGBUILD (from rev 401512, maxima-ecl/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2018-11-04 18:41:14 UTC (rev 401513) @@ -0,0 +1,54 @@ +# Maintainer: Antonio Rojas <aro...@archlinux.org> +# Contributor: Ronald van Haren <ronald.archlinux.org> +# Contributor: Damir Perisa <da...@archlinux.org> +# Modified to compile against ecl by: maribu + +pkgname=maxima-ecl +_pkgname=maxima +pkgver=5.42.1 +_eclver=16.1.2 +pkgrel=2 +pkgdesc="A sophisticated computer algebra system (compiled against ecl)" +arch=(x86_64) +license=(GPL) +url="https://maxima.sourceforge.net" +depends=(ecl-16.1.2 texinfo shared-mime-info) +makedepends=(python emacs patch) +optdepends=('gnuplot: plotting capabilities' 'rlwrap: readline support via /usr/bin/rmaxima' 'tk: graphical xmaxima interface') +conflicts=(maxima) +provides=(maxima) +options=(!zipman) # don't zip info pages or they won't work inside maxima +source=("https://downloads.sourceforge.net/sourceforge/${_pkgname}/${_pkgname}-${pkgver}.tar.gz" + build-fasl.patch matrixexp.patch stack.patch) +sha256sums=('8f555aec33bc61b5a3ee0fe2e9d6c1179db67a2ff7e0eceb6bb614058eeb40cd' + '90ced3b33361fa24c2b417e0aeba8956892f0965b4a22d57d0c04115f2a3274b' + 'ef1bc6a15fc982ff8c6aa1800bbbd3284d9e060ca27abf9d8c1266632c0c2619' + '60ed7d96da06361a2f2f2e9df36aecae0384fe454bf3f963a2cab6033e1bd7a5') + +prepare() { + cd $_pkgname-$pkgver + +# build maxima ecl library + patch -p1 -i ../build-fasl.patch +# fix matrix exponentiation + patch -p1 -i ../matrixexp.patch +# fix segfaults in sagemath + patch -p1 -i ../stack.patch +} + +build() { + cd $_pkgname-$pkgver + + ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info \ + --libexecdir=/usr/lib --enable-ecl --with-default-lisp=ecl + make +} + +package() { + cd $_pkgname-$pkgver + make DESTDIR="$pkgdir" emacsdir=/usr/share/emacs/site-lisp/maxima install + + _ecldir="/usr/lib/ecl-$_eclver" + mkdir -p "$pkgdir/$_ecldir" + install src/binary-ecl/maxima.fas "$pkgdir/$_ecldir" +} Deleted: build-fasl.patch =================================================================== --- build-fasl.patch 2018-11-04 18:40:48 UTC (rev 401512) +++ build-fasl.patch 2018-11-04 18:41:14 UTC (rev 401513) @@ -1,23 +0,0 @@ -Build a fasl library for ecl in addition to an executable program. - -References: -* http://trac.sagemath.org/ticket/16178 -* https://github.com/cschwan/sage-on-gentoo/issues/226 -* https://bugs.gentoo.org/show_bug.cgi?id=499634 - -Index: maxima-5.29.1/src/maxima.system -=================================================================== ---- maxima-5.29.1.orig/src/maxima.system -+++ maxima-5.29.1/src/maxima.system -@@ -75,6 +75,11 @@ - ;; Convert dir/foo.fas to dir/foo.o - (make-pathname :type "o" :defaults p)) - files))) -+ (c::build-fasl "binary-ecl/maxima" :lisp-files obj -+ :ld-flags -+ (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" -+ (find-package "MAXIMA"))))) -+ (if (and x (not (string= x ""))) (list x)))) - (c::build-program "binary-ecl/maxima" :lisp-files obj - :ld-flags - (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" Copied: maxima-ecl/repos/community-x86_64/build-fasl.patch (from rev 401512, maxima-ecl/trunk/build-fasl.patch) =================================================================== --- build-fasl.patch (rev 0) +++ build-fasl.patch 2018-11-04 18:41:14 UTC (rev 401513) @@ -0,0 +1,23 @@ +Build a fasl library for ecl in addition to an executable program. + +References: +* http://trac.sagemath.org/ticket/16178 +* https://github.com/cschwan/sage-on-gentoo/issues/226 +* https://bugs.gentoo.org/show_bug.cgi?id=499634 + +Index: maxima-5.29.1/src/maxima.system +=================================================================== +--- maxima-5.29.1.orig/src/maxima.system ++++ maxima-5.29.1/src/maxima.system +@@ -75,6 +75,11 @@ + ;; Convert dir/foo.fas to dir/foo.o + (make-pathname :type "o" :defaults p)) + files))) ++ (c::build-fasl "binary-ecl/maxima" :lisp-files obj ++ :ld-flags ++ (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" ++ (find-package "MAXIMA"))))) ++ (if (and x (not (string= x ""))) (list x)))) + (c::build-program "binary-ecl/maxima" :lisp-files obj + :ld-flags + (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" Deleted: matrixexp.patch =================================================================== --- matrixexp.patch 2018-11-04 18:40:48 UTC (rev 401512) +++ matrixexp.patch 2018-11-04 18:41:14 UTC (rev 401513) @@ -1,13 +0,0 @@ ---- a/share/linearalgebra/matrixexp.lisp -+++ b/share/linearalgebra/matrixexp.lisp -@@ -138,8 +138,8 @@ - (print `(ratvars = ,$ratvars gcd = '$gcd algebraic = ,$algebraic)) - (print `(ratfac = ,$ratfac)) - (merror "Unable to find the spectrum"))) -- -- (setq res ($fullratsimp (ncpower (sub (mult z ($ident n)) mat) -1) z)) -+ -+ (setq res ($fullratsimp ($invert_by_lu (sub (mult z ($ident n)) mat) '$crering) z)) - (setq m (length sp)) - (dotimes (i m) - (setq zi (nth i sp)) Copied: maxima-ecl/repos/community-x86_64/matrixexp.patch (from rev 401512, maxima-ecl/trunk/matrixexp.patch) =================================================================== --- matrixexp.patch (rev 0) +++ matrixexp.patch 2018-11-04 18:41:14 UTC (rev 401513) @@ -0,0 +1,13 @@ +--- a/share/linearalgebra/matrixexp.lisp ++++ b/share/linearalgebra/matrixexp.lisp +@@ -138,8 +138,8 @@ + (print `(ratvars = ,$ratvars gcd = '$gcd algebraic = ,$algebraic)) + (print `(ratfac = ,$ratfac)) + (merror "Unable to find the spectrum"))) +- +- (setq res ($fullratsimp (ncpower (sub (mult z ($ident n)) mat) -1) z)) ++ ++ (setq res ($fullratsimp ($invert_by_lu (sub (mult z ($ident n)) mat) '$crering) z)) + (setq m (length sp)) + (dotimes (i m) + (setq zi (nth i sp)) Copied: maxima-ecl/repos/community-x86_64/stack.patch (from rev 401512, maxima-ecl/trunk/stack.patch) =================================================================== --- stack.patch (rev 0) +++ stack.patch 2018-11-04 18:41:14 UTC (rev 401513) @@ -0,0 +1,85 @@ +diff --git a/src/hayat.lisp b/src/hayat.lisp +index 07699d6..ab8984d 100644 +--- a/src/hayat.lisp ++++ b/src/hayat.lisp +@@ -2189,6 +2189,23 @@ + (or (alike1 (exp-pt (get-datum (datum-var (car l)))) (exp-pt (car l))) + (return () )))) + ++;; SUBTREE-SEARCH ++;; ++;; Search for subtrees, ST, of TREE that contain an element equal to BRANCH ++;; under TEST as an immediate child and return them as a list. ++;; ++;; Examples: ++;; (SUBTREE-SEARCH 2 '(1 2 3)) => '((1 2 3)) ++;; (SUBTREE-SEARCH 2 '(1 2 2 3)) => '((1 2 2 3)) ++;; (SUBTREE-SEARCH 2 '(1 (2) 3)) => '((2)) ++;; (SUBTREE-SEARCH 4 '(1 (2) 3)) => NIL ++;; (SUBTREE-SEARCH 2 '(1 (2) 3 (2))) => '((2) (2)) ++ ++(defun subtree-search (branch tree &optional (test 'equalp)) ++ (unless (atom tree) ++ (if (find branch tree :test test) (list tree) ++ (mapcan (lambda (child) (subtree-search branch child test)) tree)))) ++ + (defun taylor2 (e) + (let ((last-exp e)) ;; lexp-non0 should be bound here when needed + (cond ((assolike e tlist) (var-expand e 1 () )) +@@ -2232,8 +2249,31 @@ + ((null l) t) + (or (free e (car l)) (return ())))) + (newsym e)) +- (t (let ((exact-poly () )) ; Taylor series aren't exact +- (taylor2 (diff-expand e tlist))))))) ++ (t ++ ;; When all else fails, call diff-expand to try to expand e around the ++ ;; point as a Taylor series by taking repeated derivatives. This might ++ ;; fail, unfortunately: If a required derivative doesn't exist, then ++ ;; DIFF-EXPAND will return a form of the form "f'(x)" with the ++ ;; variable, rather than the expansion point in it. ++ ;; ++ ;; Sometimes this works - in particular, if there is a genuine pole at ++ ;; the point, we end up passing a sum of terms like x^(-k) to a ++ ;; recursive invocation and all is good. Unfortunately, it can also ++ ;; fail. For example, if e is abs(sin(x)) and we try to expand to first ++ ;; order, the expression "1/1*(cos(x)*sin(x)/abs(sin(x)))*x^1+0" is ++ ;; returned. If we call taylor2 on that, we will end up recursing and ++ ;; blowing the stack. To avoid doing so, error out if EXPANSION ++ ;; contains E as a subtree. However, don't error if it occurs as an ++ ;; argument to %DERIVATIVE (in which case, we might well be fine). This ++ ;; happens from things like taylor(log(f(x)), x, x0, 1). ++ ++ (let* ((exact-poly nil) ; (Taylor series aren't exact) ++ (expansion (diff-expand e tlist))) ++ (when (find-if (lambda (subtree) ++ (not (eq ($op subtree) '%derivative))) ++ (subtree-search e expansion)) ++ (exp-pt-err)) ++ (taylor2 expansion)))))) + + (defun compatvarlist (a b c d) + (cond ((null a) t) +@@ -2968,7 +3008,21 @@ + (and (or (member '$inf pt-list :test #'eq) (member '$minf pt-list :test #'eq)) + (unfam-sing-err))) + +-(defun diff-expand (exp l) ;l is tlist ++;; DIFF-EXPAND ++;; ++;; Expand EXP in the variables as specified in L, which is a list of tlists. If ++;; L is a singleton, this just works by the classic Taylor expansion: ++;; ++;; f(x) = f(c) + f'(c) + f''(c)/2 + ... + f^(k)(c)/k! ++;; ++;; If L specifies multiple expansions, DIFF-EXPAND works recursively by ++;; expanding one variable at a time. The derivatives are computed using SDIFF. ++;; ++;; In some cases, f'(c) or some higher derivative might be an expression of the ++;; form 1/0. Instead of returning an error, DIFF-EXPAND uses f'(x) ++;; instead. (Note: This seems bogus to me (RJS), but I'm just describing how ++;; EVAL-DERIV works) ++(defun diff-expand (exp l) + (check-inf-sing (mapcar (function caddr) l)) + (cond ((not l) exp) + (t