This is likely a build error bug on all systems which do not support SSE2 but 
where building is done using the current version of gcc. It may also manifest 
as a runtime error on binary builds installed on systems which do not support 
SSE2 (but I have not tested that).

I am submitting this here rather than to bug tracker for several reasons:
   - It is unlikely anyone cares enough to fix this properly upstream (which is 
where the bug really is).
   - The build error only effects building from source on systems that are out 
of date and will becoming even less common going forward.

I am mentioning it at all, because it will help anyone who comes across this 
error in the future. The same type of error may cause somewhat confusing 
runtime errors in other packages (bug tracker searches suggest this type of 
issue has come up before in other packages).

The bug:
  The bug is somewhere in the gf2x build scripts "src/config/acinclude.m4" or 
"src/configure" somehow it decides whether or not the system supports sse2 
(look around line 75 of acinclude.m4. It appears to do this by checking if gcc 
can compile something that uses sse2. It turns out that it can... even if the 
system you are on cannot. Consequently it tries to build everything with sse2. 
This causes a problem when it tries to tune itself "src/src/tune-lowlevel.pl". 
Around line 70-78 it tries to run the compiled code. Most of these don't 
require sse2 really, and so work, some do (mul3t, mul3k, mul3k2) these fail, it 
then can't pick which one to use, and terminates building.
   If there are other places in sage where similar sse2 detection is used, but 
which are not executed at build time (most things are not), then sage will 
encounter unexpected runtime bugs when pieces of code that can benefit from 
sse2 are used.
   

The solution:
   gf2x doesn't require sse2 to work. The easiest way to build it on a system 
where the above bug is encountered is to modify:
   spkg-install:38 to become:
   ./configure --enable-sse2=no --prefix="$SAGE_LOCAL"
You don't really want to do this in the main branch though, as this slows 
things down for the 99+% of people who don't have an archaic system they are 
trying to run sage on.
A better solution is to add an if statement at this place and environment 
variable globally to disable sse2 when it doesn't exist.
Alternatively one could invest the time and figure out then fix gf2x build 
system.

- Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to