Here's my system info:
Linux node0.xxx.xxx.xxx 22.214.171.124-105.2.23.fc11.i686.PAE #1 SMP Thu Feb 11 07:05:37 UTC 2010 i686 i686 i386 GNU/Linux
SCons by Steven Knight et al.:
script: v1.2.0.r3842, 2008/12/20 22:59:52, by scons on scons-dev
engine: v1.2.0.r3842, 2008/12/20 22:59:52, by scons on scons-dev
g++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2)
When I try to compile the Rosetta 3.1 source ( ./scons.py bin mode=release ) I eventually get this error when it reaches ResidueDecompositionCalculator.cc:
src/protocols/toolbox/PoseMetricCalculators/ResidueDecompositionCalculator.cc: In member function ‘void protocols: :toolbox: :PoseMetricCalculators: :ResidueDecompositionCalculator: :residue_set_numbers_to_decomposition()’:
src/protocols/toolbox/PoseMetricCalculators/ResidueDecompositionCalculator.cc:155: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugzilla.redhat.com/bugzilla for instructions.
Preprocessed source stored into /tmp/cc9Zcfir.out file, please attach this to your bugreport.
Here's the preprocessed source:
I'm kidding ... it's 61k lines long :)
Any suggestions? Or should I go to bugzilla?
Use a different GCC version - this is a known issue, there's no known fix to Rosetta. GCC 4.3 should work.
How do I tell scons to use a different version? The only other gcc I have is 3.4. I've tried scons bin mode=release compiler=gcc34, but that appears to have no effect and it still dies when it gets to ResidueDecompositionCalculator.
This seems to have worked:
scons bin mode=release cxx=gcc cxx_ver=3.4
However, are these of any concern?
scons: Reading SConscript files ...
scons: warning: The Options class is deprecated; use the Variables class instead.%%%
File "/usr/local.i386/Rosetta-3.1.0/rosetta_source/tools/build/setup.py", line 45, in setup_build_options
scons: warning: The EnumOption() function is deprecated; use the EnumVariable() function instead.%%%
File "/usr/local.i386/Rosetta-3.1.0/rosetta_source/tools/build/setup.py", line 53, in setup_build_options
scons: warning: The ListOption() function is deprecated; use the ListVariable() function instead.%%%
File "/usr/local.i386/Rosetta-3.1.0/rosetta_source/tools/build/setup.py", line 61, in setup_build_options%%%
svn: '.' is not a working copy%%%
scons: done reading SConscript files.%%%
scons: Building targets ...%%%
Those warnings are not important. The scons warnings are caused by python versus scons versioning issues; the svn warning is leftover svn hooks from the developer version. Neither will cause trouble.
All was going well, until the compiler reached ArchiveManager.cc:
cc1plus: out of memory allocating 9608 bytes after a total of 46723072 bytes
It ran out of memory ... ?
Yup, that's a lot of memory. How much is on your hardware? Are you compiling in release (smaller) or debug (not so small?)
We can also try gutting some of the ArchiveManager stuff from compiliation. It's not depended upon by much else in the code; turning it off will prevent you from running certain specialized code on BlueGenes (which I doubt you're doing)
I compiled with:
scons bin mode=release cxx=gcc cxx_ver=3.4
The computer I'm compiling on has 3GB of RAM. That number looks like 46MB, to me so I'm not sure I understand why it didn't work. My intention is to use Rosetta 3.1 in my CS-Rosetta calculations following the Bax/NIH procedure, so it's kindof a black box to me and I'm not really sure which components I'm actually using.
Is there a smaller than release mode of install? Or is there a way to just install the components for what I need?
This is what it's using to try to compile it:
g++34 -o build/src/release/linux/2.6/32/x86/gcc/3.4/protocols/jd2/archive/ArchiveManager.os -c -std=c++98 -pipe -ffor-scope -W -Wall -pedantic -Wno-long-long --param inline-unit-growth=1000 --param large-function-growth=50000 -malign-double -march=pentium4 -O3 -ffast-math -funroll-loops -finline-functions -finline-limit=20000 -s -Wno-unused-variable -fPIC -DNDEBUG -Isrc -Iexternal/include -Isrc/platform/linux/32/gcc/3.4 -Isrc/platform/linux/32/gcc -Isrc/platform/linux/32 -Isrc/platform/linux -Iexternal/boost_1_38_0 -I/usr/local/include -I/usr/include src/protocols/jd2/archive/ArchiveManager.cc
I'm trying again and 13 min in and it's at ~30% of the 3GB.
I don't have a way to reproduce it with 3.4 at hand. I believe our primary testing server runs 3.4.6 (I use 4.3 mostly).
We can play games by cutting bits and pieces out, but ultimately you can't cut the libraries down by much without a lot of manual effort. As you mention, I'm not sure why it says 46 MB is a problem. I've compiled on machines with 2 GB, compiling two threads at a time, with no problem.
Off the top of my head, to remove ArchiveManager you'll need to remove those files from protocols.src.settings (add # in front of those files; preferably everything in its immediate directory "archive" *but NOT all of JD2*) and then modify protocols/jd2/JobDistributorFactory to remove all references to ArchiveManager and its sibling classes (again, everything from "archive"). You might have to start killing code elsewhere to get it to compile after that; it could get ugly fast. Hopefully not.
You said you re-tried this - did it work? 30% of 3GB in cached files is expected memory usage for one threaded compiling.
No, unfortunately. I got the same thing:
cc1plus: out of memory allocating 9608 bytes after a total of 46829568 bytes
I'll be away for 3 weeks, so I'll have to get back in about September. Thanks for the help so far.
Insrtalling Rosetta scons bin mode=release cxx=gcc cxx_ver=4.4 , finnally I have this :
release/linux/2.6/32/x86/gcc/utility/options/keys/OptionKeys.os -Llib -Lexternal/lib -Lbuild/src/release/linux/2.6/32/x86/gcc -Lsrc -L/usr/local/lib -L/usr/lib -lObjexxFCL -lz
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
scons: *** [build/src/release/linux/2.6/32/x86/gcc/libutility.so] Error 1
scons: building terminated because of errors.
Do you know how I can solve it??
This is the key part of the message:
> /usr/bin/ld: cannot find -lz
On Linux, you need to install the package zlib-dev (or maybe libz-dev), i forget). Look for it in your package manager.