On Mon, Jun 14, 2010 at 3:49 AM, Dr. David Kirkby <david.kir...@onetel.net> wrote: > The recent thread: > > "Error building Sage 4.4.3 under vanilla Debian lenny amd64: Error while > installing flint" > > http://groups.google.com/group/sage-devel/browse_thread/thread/54531b50412b9882/2f45257c5e56ab00?lnk=gst&q=Error+building+Sage+4.4.3+under+vanilla+Debian+lenny+amd64%3A+Error+while+installing+flint#2f45257c5e56ab00 > > > is an example of where someone had a broken installation of Debian > (different versions of gcc and g++), so got an error from the 'prereq' > script, which I altered some time ago to detect different versions and exit. > > The poster then went on to try to get CC and/or CXX in order that he got the > same (older) versions of both. > > Such a plan will never work in Sage, as numerous bits of code make direct > calls to "gcc" or "g++" and ignore the environment variables. So any attempt > to do this results on C compiler being used to build one bit of Sage, and > another to build another bit of Sage. That seems a recipe for disaster. > > Hence I'd propose that any attempt to set CC, CXX, FC, or F77 caused the > build to exit with a warning. Then allow an environment variable like > > SAGE_ALLOW_SETTING_OF_COMPILERS > > (better name?) > > that will allow someone to do this, if they really want to. > > Not letting people set CC or similar seems a bit dumb, as it is very useful > for some sort of debugging, or porting to Sun Studio. But it is pretty > dangerous for a typical user to do, as it will never work as they would > expect. > > The same is true really of CP, CHMOD and several other variables. They work > in some parts of Sage, and not in others. > > Dave
Another possibility might be that if the Sage build system starts and the environment variable CC is defined, then a command "gcc" that runs whatever is specified in CC is created and put first in the path. Then: (1) any build scripts that still annoying look for gcc will instead find this fake gcc wrapper and use it, hence calling CC. (2) We can also make it so this fake gcc wrapper logs whenever it is called, and hence easily nail down which packages are offendors. The same can be done with all the other variables you mentioned. -- William -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org