You are here

KeyError: "Unknown version number 4.7 for compiler 'gcc'" on Fedora 17

7 posts / 0 new
Last post
KeyError: "Unknown version number 4.7 for compiler 'gcc'" on Fedora 17


I am trying to compile Rosetta 3.4 on Fedora 17 but I get the following error:

$ python bin mode=release
scons: Reading SConscript files ...
Traceback (most recent call last):
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/SConstruct", line 141, in main
build = SConscript("tools/build/")
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/external/scons-local/scons-local-2.0.1/SCons/Script/", line 614, in __call__
return method(*args, **kw)
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/external/scons-local/scons-local-2.0.1/SCons/Script/", line 551, in SConscript
return _SConscript(self.fs, *files, **subst_kw)
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/external/scons-local/scons-local-2.0.1/SCons/Script/", line 260, in _SConscript
exec _file_ in call_stack[-1].globals
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/tools/build/", line 414, in
build = setup()
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/tools/build/", line 405, in setup
build.options_requested, build.options = setup_build_options()
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/tools/build/", line 108, in setup_build_options
supported, actual.cxx, requested.cxx_ver
File "/home/thomas/Programs/Rosetta3.4/rosetta_source/tools/build/", line 83, in select_compiler_version
(actual, compiler)
KeyError: "Unknown version number 4.7 for compiler 'gcc'"
scons: done reading SConscript files.
scons: Building targets ...
scons: `bin' is up to date.
scons: done building targets.

Any ideas what goes wrong?

Post Situation: 
Thu, 2012-08-23 06:21

Yes - we don't support 4.7, so it's not in the build system.

If you want to compile in 4.7, add 4.7 to the list of gcc compilers in rosetta_source/tools/build/options.settings. Chances are very good it will work; if it doesn't I will try to offer compilation fixes but with no copy of 4.7 to test against they may be shots in the dark.

Thu, 2012-08-23 06:31

Thanks - I compiled in 4.7 but got:

scons: *** [build/src/release/linux/3.5/64/x86/gcc/4.7/mpi/protocols/jd2/SingleFileBuffer.os] Error 1

both in serial and in mpi mode. I also tried to compile a singe protocol (relax) but still got the same.

Any idea how I can fix it?

Alternatively, is there eny flag that tells to which compiler version to use? Which files will I need from the following?

Thu, 2012-08-23 09:48

scons: *** [build/src/release/linux/3.5/64/x86/gcc/4.7/mpi/protocols/jd2/SingleFileBuffer.os] Error 1

This isn't enough error to diagnose - there should be more error text up above that somewhere. If you aren't comfortable figuring out which lines I need, just attach the whole thing as .txt. Please compile at -j1 to simplify the log (it should fail quickly).

You can offer scons cxx_ver=4.6 to get gcc 4.6, or 4.5, or whatever. scons bin mode=release cxx_ver=4.6. I don't know anything about installing other versions of gcc on Fedora (I use Ubuntu and would use synaptic to do it) - ask on the Fedora boards?

Thu, 2012-08-23 09:52

I am sorry. Here's the output:

$ scons bin mode=release
scons: Reading SConscript files ...
Running versioning script ... svn: E155007: '/home/thomas/Programs/Rosetta3.4/rosetta_source' is not a working copy
Done. (0.0 seconds)
scons: done reading SConscript files.
scons: Building targets ...
g++ -o build/src/release/linux/3.5/64/x86/gcc/4.7/protocols/jd2/SingleFileBuffer.os -c -isystem external/boost_1_46_1/boost/ -isystem external/boost_1_46_1/boost/ -O3 -ffast-math -funroll-loops -finline-functions -finline-limit=20000 -s -Wno-unused-variable -fPIC -DNDEBUG -Isrc -Iexternal/include -Isrc/platform/linux/64/gcc/4.7 -Isrc/platform/linux/64/gcc -Isrc/platform/linux/64 -Isrc/platform/linux -Iexternal/boost_1_46_1 -Iexternal/dbio -I/usr/include -I/usr/local/include src/protocols/jd2/
src/protocols/jd2/ In constructor 'protocols::jd2::WriteFileSFB::WriteFileSFB(const string&, core::Size, bool, core::Size&)':
src/protocols/jd2/ error: 'sleep' was not declared in this scope
scons: *** [build/src/release/linux/3.5/64/x86/gcc/4.7/protocols/jd2/SingleFileBuffer.os] Error 1
scons: building terminated because of errors.

In the meantime I 'll try to compile an older gcc version.

Thu, 2012-08-23 11:04

Offhand, it needs the header. If you'll look in the top of src/protocols/jd2/ you'll see:

#ifdef WIN32
#include windows.h // for sleep()
#include ctime // for clock()

Copy the line
#include ctime // for clock()

outside of the #ifdef block and see if that works. Failing that, individually try the lines

#include cstdlib
#include stdlib.h
#include unistd.h

up at the top with the rest of the includes and see if one of those works. I'm pretty confident one of them will.

NOTE: I had to remove all the angle brackets from my include lines so the HTML won't eat them - you know how the syntax works? It should be clear from the top of that file.

Thu, 2012-08-23 11:11

Yes, it worked with #include unistd.h. Thank you!

Thu, 2012-08-23 14:50