Opened 9 years ago

Last modified 9 years ago

#10187 closed defect

Update ecl and maxima — at Version 22

Reported by: vbraun Owned by: tbd
Priority: major Milestone: sage-4.6.1
Component: packages: standard Keywords:
Cc: was, jhpalmieri, mpatel, leif, jsp, jason, kcrisman, fbissey, jpflori Merged in:
Authors: Volker Braun, David Kirkby Reviewers:
Report Upstream: Workaround found; Bug reported upstream. Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by drkirkby)

Please update ecl and maxima to the newest upstream release. Sage packages are here:

http://boxen.math.washington.edu/home/kirkby/patches/ecl-10.4.1.spkg http://www.stp.dias.ie/~vbraun/Sage/spkg/maxima-5.22.1.spkg

Note that you cannot upgrade one without the other; Both need to be upgraded simultaneously or build will fail.

Relevant tickets for ecl:

  • #9493: Remove extra baggage from ECL 10.2.1.p1 (again). The package has been cleaned up, but I feel removing gmp sources is too dangerous.
  • #10185: the old ecl-10.2.1 does not build on Fedora 14: Hopefully fixed with the updated ecl from this ticket.

Relevant tickets for maxima:

  • #8645: ECL library "maxima.fasb" is built at new location. The patches from this bug have been incorporated into the maxima spkg, and #8645 can be closed after this ticket.
  • #8731: update/upgrade maxima to latest upstream (5.21.1): Latest upstream is nowadays 5.22.1.
  • #8582: sum(1/(1+k^2), k, -oo, oo) returns 0: The new maxima seems to be able to evaluate this correctly, at leasts it returns some expression with digamma functions.

The updated maxima code seems to be more careful about signs which leads to doctest errors.

Change History (23)

comment:1 Changed 9 years ago by kcrisman

  • Cc kcrisman added

comment:2 Changed 9 years ago by vbraun

The doctests show one maxima regression:

sage: t = log(sqrt(2) - 1) + log(sqrt(2) + 1); t
log(sqrt(2) - 1) + log(sqrt(2) + 1)
sage: u = t.maxima_methods(); u
MaximaWrapper(log(sqrt(2) - 1) + log(sqrt(2) + 1))
sage: u.logcontract()
log((sqrt(2) - 1)*(sqrt(2) + 1))

This simplified to 0 in a previous version. But at least its not wrong ;-)

The attached patch fixes all doctests except for a timeout in maxima. That one is a different issue with maxima, which forgets to print the general-display-prefix variable for errors:

(sage subshell) volker-desktop:sage vbraun$ ./local/bin/maxima -p ./local/bin/sage-maxima.lisp 
;;; Loading #P"/home/vbraun/Sage/sage/local/lib/ecl/sb-bsd-sockets.fas"
;;; Loading #P"/home/vbraun/Sage/sage/local/lib/ecl/sockets.fas"
;;; Loading #P"/home/vbraun/Sage/sage/local/lib/ecl/defsystem.fas"
;;; Loading #P"/home/vbraun/Sage/sage/local/lib/ecl/cmp.fas"
;;; Loading #P"/home/vbraun/Sage/sage/local/lib/ecl/sysfun.lsp"
Maxima 5.22.1 http://maxima.sourceforge.net
using Lisp ECL 10.4.1
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) 1;
<sage-display>(%o1)                                  1
(%i2) 1==1;
incorrect syntax: = is not a prefix operator
1==
 ^
(%i2) 1=1;
<sage-display>(%o2)                                1 = 1

comment:3 follow-up: Changed 9 years ago by drkirkby

FYI, here's the failures on OpenSolaris 06/2009 with those updated versions of Maxima and ECL.

sage -t  -long -force_lib devel/sage/sage/interfaces/maxima.py
*** *** Error: TIMED OUT! PROCESS KILLED! *** ***

	 [1800.2 s]
 
----------------------------------------------------------------------

The following tests failed:

	sage -t  -long -force_lib devel/sage/sage/symbolic/integration/integral.py # 6 doctests failed
	sage -t  -long -force_lib devel/sage/sage/symbolic/maxima_wrapper.py # 1 doctests failed
	sage -t  -long -force_lib devel/sage/sage/symbolic/expression.pyx # 11 doctests failed
	sage -t  -long -force_lib devel/sage/sage/misc/functional.py # 2 doctests failed
	sage -t  -long -force_lib devel/sage/sage/calculus/wester.py # 1 doctests failed
	sage -t  -long -force_lib devel/sage/sage/calculus/tests.py # 1 doctests failed
	sage -t  -long -force_lib devel/sage/sage/calculus/calculus.py # 5 doctests failed
	sage -t  -long -force_lib devel/sage/sage/calculus/functional.py # 1 doctests failed
	sage -t  -long -force_lib devel/sage/sage/plot/plot3d/transform.pyx # 1 doctests failed
	sage -t  -long -force_lib devel/sage/sage/interfaces/maxima.py # Time out
----------------------------------------------------------------------
Total time for all tests: 2628.2 seconds
make: *** [ptestlong] Error 192
drkirkby@hawk:~/sage-4.6.1.alpha0$ 

I've not applied any patches at this point. I'll apply patches and rerun later.

comment:4 in reply to: ↑ 3 Changed 9 years ago by kcrisman

Replying to drkirkby:

FYI, here's the failures on OpenSolaris 06/2009 with those updated versions of Maxima and ECL.

sage -t  -long -force_lib devel/sage/sage/interfaces/maxima.py
*** *** Error: TIMED OUT! PROCESS KILLED! *** ***

	 [1800.2 s]
 

I'd be interested what happened if you manually removed the tests in that file which test the tab-completion for Maxima. I get a problem on Mac OS X Tiger with that file for exactly that reason. We haven't filed a ticket because nobody knows how to fix it, and tab-completion does work on that platform, just not the testing.

comment:5 follow-up: Changed 9 years ago by vbraun

The TIMED OUT! error is the missing general-display-prefix, which causes the expect interface to wait forever for maxima to print its next prompt.

I've filed a bug upstream here: https://sourceforge.net/tracker/?func=detail&aid=3098375&group_id=4933&atid=104933

comment:6 in reply to: ↑ 5 Changed 9 years ago by kcrisman

Replying to vbraun:

The TIMED OUT! error is the missing general-display-prefix, which causes the expect interface to wait forever for maxima to print its next prompt.

Okay, thanks - so that's unrelated to the Tiger timeout from earlier Maximas.

comment:7 follow-ups: Changed 9 years ago by vbraun

  • Report Upstream changed from N/A to Workaround found; Bug reported upstream.

I've modified sage/interfaces/maxima.py to work with maxima's prompt_prefix instead. Patch is attached and fixes the remaining doctest error.

This requires that `$SAGE_LOCAL/bin/sage-maxima.lisp sets

; (setf *general-display-prefix* "<sage-display>")
(setf *prompt-prefix* "<sage-display>")

I've made a updated sage_scripts spkg here: http://www.stp.dias.ie/~vbraun/Sage/spkg/sage_scripts-4.6.rc0.p0.spkg

To test this ticket, you need all three spkgs and both patches.

comment:8 Changed 9 years ago by vbraun

  • Status changed from new to needs_review

comment:9 Changed 9 years ago by fbissey

  • Cc fbissey added

comment:10 Changed 9 years ago by drkirkby

One thing we don't don, which I think would be sensible, is to include the test suite for ECL. That adds 1.7 MB. From the README.ECL file:

	cd tests
	make

You will find two types of output files:

	*.out	The whole output of a test
	*.erg	The errors arising from a test

When there is no *.erg, it means that ECL passed the test.

Would it not be sensible to add these in? Then we could execute the tests with a spkg-check file, like we do other code which has self-tests.

Dave

comment:11 in reply to: ↑ 7 Changed 9 years ago by kcrisman

Replying to vbraun:

I've modified sage/interfaces/maxima.py to work with maxima's prompt_prefix instead. Patch is attached and fixes the remaining doctest error.

Just a very minor note:

# we are now getting three lines of commented verbosity 

but of course you changed it to get rid of the extra two lines from our constantly added packages :) so it's now five lines. Might as well change that too so future people are confused.

comment:12 Changed 9 years ago by kcrisman

Also, be sure to include a test that shows #8729 is fixed, as that was closed as a duplicate on the condition that #8731's doctests would show that.

comment:13 Changed 9 years ago by aginiewicz

I looked trough doctest patch and compared it with mine from #8731, I have few comments.

I think that doctest fix for sage/calculus/functional.py should be modified - it was documentation of the use of assume, but now - when maxima can calculate this integral without assumption, isn't that same as applying assumption to result? And the integral is checked in other doctest now. Maybe there is better example that still needs the assume to get result?

Also the doctest in sage/misc/functional.py was here to demonstrate numerical approximation of integral that cannot be evaluated iirc, and now when it can be evaluated, I think it should be changed to something that cannot be - like Jason did in patch in #8731.

Finally, there is typo in doctest to sage/symbolic/expression.pyx - it should say that this doctest is here to check that #7334 not #7344 is fixed (#7344 point to libjpeg issue so it cannot be it) - and it should stay in here unmodified. Also - the log thing - it's not exactly regression, it's feature. This is because of Maxima ticket 947808 - http://sourceforge.net/tracker/?func=detail&aid=947808&group_id=4933&atid=104933 - they now try to keep the expression as factored as they can without using factor. This results in observed behaviour. This doctest I think cannot be changed as it demonstrated that ticket is solved, but we should apply "x = x.simplify_rational()" after "x = x.simplify_log('one')" in definition of simplify_full - that way full simplify would result in same results as before I think, and #7334 would be still fixed. Now, this doctest shows nothing.

comment:14 Changed 9 years ago by drkirkby

  • Status changed from needs_review to needs_work

There is a problem with the ECL package here. The history of all recent changes has been lost. The recent changes to the package have been:

=== ecl-10.2.1.p3 (David Kirkby, David Kirkby, 17th September 2010) ===
=== ecl-10.2.1.p2 (David Kirkby, 30th July 2010) ===
=== ecl-10.2.1.p1 (Mitesh Patel, 11th July 2010) ===
=== ecl-10.2.1.p0 (David Kirkby, 11th July 2010) ===
=== ecl-10.2.1 (William Stein, 14 February 2010) ===

but instead SPKG.txt shows

=== ecl-10.4.1.p0 (Leif Leonhardy, Volker Braun, 29th September 2010) ===
=== ecl-10.4.1 (N. Bruin, W. Stein, D. Kirkby and M. Patel 19th June 2010) ===
=== ecl-10.2.1 (William Stein, 14 February 2010) ===

This error has occurred since the package is based on one that I created several months ago, which never got merged, because their were conflicts with that and the Maxima package at the time.

The current version of ECL in Sage should have been used as a starting point - not an old one that was never merged.

I'll sort the above problem out, and add the ECL test code today.

Dave

comment:15 Changed 9 years ago by fbissey

The patch fix_easy_doctest doesn't apply cleanly on either 4.6.rc0 or 4.6.1.alpha0. Was it prepared against 4.5.3?

comment:16 in reply to: ↑ 7 ; follow-up: Changed 9 years ago by leif

Replying to vbraun:

I've modified sage/interfaces/maxima.py to work with maxima's prompt_prefix instead. Patch is attached and fixes the remaining doctest error.

This requires that `$SAGE_LOCAL/bin/sage-maxima.lisp sets

; (setf *general-display-prefix* "<sage-display>")
(setf *prompt-prefix* "<sage-display>")

I've made a updated sage_scripts spkg here: http://www.stp.dias.ie/~vbraun/Sage/spkg/sage_scripts-4.6.rc0.p0.spkg

To test this ticket, you need all three spkgs and both patches.

Could you please attach a patch to the scripts repo, too (rather than a link to a complete new scripts spkg)?

Also, attaching diffs (or Mercurial patches) of the spkgs makes reviewing easier.

comment:17 in reply to: ↑ 16 Changed 9 years ago by leif

Replying to leif:

Could you please attach a patch to the scripts repo, too (rather than a link to a complete new scripts spkg)?

P.S.: Of course I could do that, too, but then you wouldn't be able to update it in case you later modify the patch.

Changed 9 years ago by vbraun

Updated patch

comment:18 Changed 9 years ago by vbraun

I've incorporated your suggestions and updated the patches. Both are (and were) against 4.6.rc0 and apply cleanly. Maybe you had the wrong order? It should be

  • trac_10187_fix_easy_doctests.patch
  • trac_10187_general_display_prefix_workaround.patch

I'll attach patches for the sage_scripts and maxima spgk for easier review. Once Dave is finished with the ecl package then this ticket is ready for review again.

comment:19 Changed 9 years ago by fbissey

Wrong order indeed! I thought the two patches were orthogonal.

comment:20 follow-up: Changed 9 years ago by drkirkby

I'm going to have to ask on the ECL list how to run the test suite - I can't work out where ones supposed to copy the source.

These changes are not going to make it into 4.6. The milestone is 4.6.1, and it will easily be resolved by then.

Dave

comment:21 in reply to: ↑ 20 Changed 9 years ago by drkirkby

Replying to drkirkby:

I'm going to have to ask on the ECL list how to run the test suite - I can't work out where ones supposed to copy the source.

These changes are not going to make it into 4.6. The milestone is 4.6.1, and it will easily be resolved by then.

Dave

I've now got the information on the ANSI test suite from the ECL developer, though I gather the copy on the ECL site is rather out of date. Also, the ECL developer has fixed the bug that causes #9840, so I'll patch that too, so #9840 can hopefully be closed at the same time.

I'll try to get this sorted out within the next few days.

Dave

comment:22 Changed 9 years ago by drkirkby

  • Authors changed from Volker Braun to Volker Braun, David Kirkby
  • Description modified (diff)

I have put an updated ECL file at http://boxen.math.washington.edu/home/kirkby/patches/ecl-10.4.1.spkg This has only been checked on OpenSolaris - I don't have access to a Fedora 14 machine, so can't verify if it actually fixes the issues reported at #10185

I should make a few comments about this:

  • I have not added an spkg-check file or the Lisp tests, as I gather from the ECL developer the Lisp tests on the ECL site are outdated. Fixing this appears to be a non-trivial issue.
  • The repository information from the ecl-10.2.1.p3 version actually in Sage is kept, as it should be. (Volker's package was based on a 10.4.1 package I created months ago, which never got merged into Sage. So the repository information was not correct).
  • Despite being told the Solaris text relocation issue was resolved, it appears it is not as simple as applying a single patch as I had hoped. So #9840 remains unresolved, though it should be fixed when the next stable ECL release is made.
  • I've cleaned the package up somewhat.
  • I did not remove the gmp sources, as doing so requires a new configure file to be created. Whilst I can see this is advantageous if done properly, I fear that this will be done incorrectly at some point in the future, which can result in chaos.

After

I get one reject out of six when adding

trac_10187_general_display_prefix_workaround.patch

to sage 4.6.1.alpha0, so I think that patch needs updating. The contents of the reject are:

--- maxima.py
+++ maxima.py
@@ -728,10 +729,12 @@
         
             sage: maxima._eval_line('1+1;')
             '2'
-            sage: maxima.eval('sage0: x == x;')
+            sage: maxima._eval_line('sage0: x == x;')
             Traceback (most recent call last):
             ...
-            TypeError: error evaluating "sage0: x == x;":...
+            TypeError: Error executing code in Maxima...
+
+
         """
         if len(line) == 0:
             return ''

But as I say, all doctests passed for me, despite one patch was not fully applied!!

----------------------------------------------------------------------
All tests passed!
Total time for all tests: 1871.3 seconds

I'm leaving as needs work, as clearly the fact one patch does not apply cleanly is a problem. It also needs testing on more than one system, but I don't have access to the Fedora 14 system where this was a particular problem.

Dave

Note: See TracTickets for help on using tickets.