-
-
Notifications
You must be signed in to change notification settings - Fork 512
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow building Sage with GCC-4.7.x #12751
Comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Changed keywords from none to GCC 4.7.0 C++11 |
This comment has been minimized.
This comment has been minimized.
comment:5
Also PARI 2.5.1's test suite fails due to segfaults in two test files, SciPy's test suite fails to build due to an internal compiler error. R now fails to build for me (when byte-compiling), interestingly only with less fancy GCC optimizations enabled. (It did build with LTO and Graphite loop optimization enabled). This is all on Ubuntu 10.04.4 LTS x86_64. |
This comment has been minimized.
This comment has been minimized.
comment:7
Replying to @nexttime:
Turns out that this isn't reproducible. Actually, in the first attempt (although with I've then successfully rebuilt SciPy without Nevertheless, SciPy's |
comment:8
Replying to @nexttime:
FWIW, I get the same test errors in the build with GCC 4.7.0 with LTO and Graphite loop optimization enabled. Note that |
comment:9
Replying to @nexttime:
This is really weird: R does build if I just in addition enable LTO... 8) (My second Sage 5.0.beta10 build with GCC 4.7.0, without LTO and Graphite loop optimization, just used |
comment:10
Replying to @nexttime:
... and also passes its test suite with that. |
comment:12
Replying to @jdemeyer: Btw., any timeline aimed at for the 5.0 release? |
comment:13
Replying to @nexttime:
No, but you should ask William Stein. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:16
For the record: I've updated the LinBox spkg at #12762, now also adding an |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Changed keywords from GCC 4.7.0 C++11 to GCC 4.7.0 C++11 -fpermissive compiler bugs |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:54
Replying to @vbraun:
There should be in the MPIR and MPFR packages, because those are prerequisites for the Sage GCC spkg. |
comment:55
To clarify: we still want people with GCC-4.7.0 on ia64 to be able to build Sage, but only with the Sage-built GCC. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:57
GCC 4.7.1 has been released on June 14th. |
comment:58
Replying to @vbraun:
Depends... The compiler wrapper (afaik) doesn't know what code or spkg it currently builds, and usually only few parts are affected (probably with different work-arounds). E.g. disabling optimization for the whole build is poor and may not even work. It's probably more tedious to put [specific] work-arounds into a couple of spkgs, but IMHO also preserves some kind of modularity. As a brute alternative, we could just blacklist (almost) all somehow non-functional compiler/OS combinations (most probably ignoring compiler options) in Sage's prerequisite check, but that's not very user- (nor developer-) friendly, and isn't "modular" either.
|
comment:59
Replying to @nexttime:
I disagree. Just because our testsuite didn't catch it doesn't mean that the code was compiled correctly. If the optimizer has a known bug then we must not use that particular optimization anywhere it if we want to trust the result. |
comment:60
Replying to @vbraun:
:-) Well, in the case I think you're referring to (ia64, "impossible reload"), the compiler bailed out, and it wasn't some "particular optimization", but the whole code generation (more precisely register allocation, in the presence of inline assemby) was broken, although only in some "corner cases". You can almost never be sure all code will be compiled correctly [or otherwise raise an error] (under all circumstances), but testsuites are supposed to get at least some confidence. In this case certainly GCC's testsuite was insufficient, and/or the release hadn't been thoroughly tested [on ia64]. If instead we'd discovered In general, if you experience some function (or code, tool, whatever) gives wrong results on some inputs, you usually first try to narrow its domain, unless or until you can really fix it (and probably make sure it does work in all cases it was specified for). Dropping it completely until some "rare" issue is solved is not always an option (while documenting the issue is), or simply too inconvenient. Otherwise we'd never release any Sage version, since there are and always will be known "bugs" or limitations. |
comment:61
Its nice for the 2 remaining users (down from 3 now that skynet is down) of I don't see a problem with disabling optimization on rare architectures where this can simply be fixed by updating the compiler from the point-oh release that you probably shouldn't have used anyways. And if your distribution backported a fix then you can still reenable optimizations. |
comment:62
Replying to @vbraun:
The GCC spkg solves most of these issues. |
comment:63
Replying to @vbraun:
We can hardly officially support platforms we have no access to. Is skynet intentionally down? Incidentally just tried to login...
Well, that's a matter of documentation (and wikipedia ;-) ). We used to clean up "obsolete" work-arounds regularly, have our weird prerequisites check (besides checks in some spkgs' IMHO the bigger problem is some distros (or OSs) shipping immature compilers by default (some not even providing fixes later). Always supporting the most recent GCC version on all skynet platforms may now be a requirement of the past; don't know. |
Merged: sage-5.2.beta1 |
comment:65
There are still issues with GCC 4.7.0 (presumably any GCC 4.7.x) on Solaris, e.g. with Singular, similar to those with FLINTQS (#12855). (These are not related to compiler bugs!) |
Sage fails to build using GCC 4.7.0 on various systems, for different reasons.
spkg-check
#12762-O3
during byte-compiling on Solaris SPARC and Linux x86_64; on the former-O2
works, on the latter somewhat surprisingly-O3 -flto
. (Cf. comments below.)compat
andlinear
) of PARI's test suite fail due to segfaults when compiling with-O3
/-O2
/-O1
, at least on Linux x86 and x86_64.gcc-4.7.1 spkg for testing purposes: #13150.
The ia64 bug is fixed in GCC 4.7.1, so we should apply the work-around only on GCC 4.7**.0** and only for packages which are prerequisites of GCC (since we don't plan to support Sage on ia64 with GCC 4.7.0, there is no point in work-arounds for some packages):
mpir-2.4.0.p6 (Jeroen Demeyer, 28 May 2012)
gcc-4.7.0 and not on other gcc-4.7.x versions.
mpfr-3.1.0.p2 (Jeroen Demeyer, 28 May 2012)
gcc-4.7.0 and not on other gcc-4.7.x versions.
zn_poly-0.9.p9 (Jeroen Demeyer, 28 May 2012)
has been fixed in gcc-4.7.1 and we will not support building Sage
with gcc-4.7.0 on Itanium.
ecm-6.3.p8 (Jeroen Demeyer, 28 May 2012)
has been fixed in gcc-4.7.1 and we will not support building Sage
with gcc-4.7.0 on Itanium.
Apply:
SAGE_ROOT
CFLAGS
andCXXFLAGS
being overridden)CC: @jdemeyer @nexttime
Component: build
Keywords: GCC 4.7.0 C++11 -fpermissive compiler bugs sd40.5
Author: Jeroen Demeyer
Reviewer: Volker Braun
Merged: sage-5.2.beta1
Issue created by migration from https://trac.sagemath.org/ticket/12751
The text was updated successfully, but these errors were encountered: