You are here

Your compiler does not have full support for C++ll regex, and therefore can't suport RegEx_based_CDR_Detector/antitody grafting.

4 posts / 0 new
Last post
Your compiler does not have full support for C++ll regex, and therefore can't suport RegEx_based_CDR_Detector/antitody grafting.
#1

Hi there,

One problem with the initial use of antibody application is that there is complie issue shown as the following:

[ ERROR ] : Caught exception :
File: src/protocols/antibody/grafting/regex_based_cdr_detection.cc :47
[ ERROR ] UtilityExitException
EROREROR: Your compiler does not have full support for C++ll regex, and therefore can't suport RegEx_based_CDR_Detector/antitody grafting.

According to the discussion on this issue in the forum, I learned that it was caused by the low version of gcc (the original version of gcc was 4.8).

Due to permissions, I can only update the gcc in the conda environment. Install gcc 8.4.0 (the lowest available, see Figure 1 for compiler versions in conda environment,The following operations are done in this conda environment) in conda environment, remove openmpi and compile openmpi from scratch, using the commands as follows:

 tar -zxvf /data/home/ldx022/software/openmpi-4.1.4.tar.gz
 cd /data/home/ldx022/software/openmpi-4.1.4.tar.gz
 ./configure -prefix=/data/home/ldx022/software/openmpi-4.1.4
 make -j 4
 make install

Then start clean with the the "./scons.py -c mode=release bin extras=mpi" command (I also tried uninstalling rosetta from scratch earlier).

Compile from scratch with the "./scons.py -j 40 mode=release bin extras=mpi" command. In the rosetta folder, the build file in source is still 4.8 gcc(/data/home/ldx022/software/rosetta_src_2021.16.61629_bundle/main/source/build/external/release/linux/3.10/64/x86/gcc/4.8/mpi), plus a new problem as the figure 2.

I couldn't find the libcifparse.so file it wanted, so I found the required libcifparse.so file in rosetta in another user's directory and put it in /data/home/ldx022/lib.

Then I added "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/home/ldx022/lib" to the .bashrc file and source it, as a result:

gcc/4.8/mpi/cifparse/mapped_ptr_vector.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/mapped_vector.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/ParentChild.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/RcsbFile.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/RcsbPlatform.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/Serializer.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/TableFile.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/TTable.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/CifParser.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/CifScanner.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/DICParser.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/DICScanner.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/regcomp.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/regerror.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/regexec.os build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/regfree.os -Lexternal/lib -Lbuild/external/release/linux/3.10/64/x86/gcc/4.8/mpi -Lexternal -Lbin -L/share/platform/lsf/10.1/linux2.6-glibc2.3-x86_64/lib -L/data/home/ldx022/lib -L/usr/lib -L/usr/local/lib
/usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/usr/bin/ld: build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/cifparse/CifScanner.os: unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
scons: *** [build/external/release/linux/3.10/64/x86/gcc/4.8/mpi/libcifparse.so] Error 1
scons: building terminated because of errors.

The current problems are:

1. Is there any solution to the above situation ( compiler versions in conda environment are shown in figure 1)

2. Should I use a more advanced version of g++? I have already used the "https://www.rosettacommons.org/docs/latest/build_documentation/Cxx11Support" where it provides a test script, the result is shown in figure 3, The failure of option test seems very important to me, but since I can only use conda, I found that g++ could not be found in conda by using conda search, only mpicc and mpicxx are not high, I wonder whether they can meet the requirements.

(123) [ldx022@mn01 ~]$ conda search g++
Loading channels: done
No match found for: g++. Search: *g++*

PackagesNotFoundError: The following packages are not available from current channels:

  - g++

Current channels:

  - https://repo.anaconda.com/pkgs/main/linux-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/linux-64
  - https://repo.anaconda.com/pkgs/r/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.


(123) [ldx022@mn01 ~]$ conda search mpiCC
Loading channels: done
No match found for: mpicc. Search: *mpicc*
# Name                       Version           Build  Channel             
mpich-mpicc                    3.2.1      h7b6447c_8  pkgs/main           
mpich-mpicc                    3.3.2      hf39692e_0  pkgs/main           
openmpi-mpicc                  4.0.2      h7b6447c_1  pkgs/main           
(123) [ldx022@mn01 ~]$ conda search mpicxx
Loading channels: done
No match found for: mpicxx. Search: *mpicxx*
# Name                       Version           Build  Channel             
mpich-mpicxx                   3.2.1      hfd86e86_8  pkgs/main           
mpich-mpicxx                   3.3.2      h7b6447c_0  pkgs/main           
openmpi-mpicxx                 4.0.2      hfd86e86_1  pkgs/main           
(123) [ldx022@mn01 ~]$ conda search mpicc
Loading channels: done
No match found for: mpicc. Search: *mpicc*
# Name                       Version           Build  Channel             
mpich-mpicc                    3.2.1      h7b6447c_8  pkgs/main           
mpich-mpicc                    3.3.2      hf39692e_0  pkgs/main           
openmpi-mpicc                  4.0.2      h7b6447c_1  pkgs/main

3. I am a novice, so I don't know if I compiled openmpi correctly. I compiled openmpi in a conda environment (manually rm the previous openmpi folder before recompiling, and rosetta did a similar thing when recompiling). gcc in this environment is version 8.4.0, but the final compilation of rosetta in this environment still shows version 4.8. What can I do?

I've tried many things, but nothing has worked. What should I do?

Because this is very important to me, so I am a little anxious.Any advice would be appreciated!

Thanks,

Lu

AttachmentSize
compiler versions in conda environment61.08 KB
2.jpg69.02 KB
compiler test74.07 KB
Post Situation: 
Thu, 2023-03-09 17:03
ldx022

The version of GCC you need for the antibody support is basically 5.2 or after. GCC 8.4 should be perfectly fine in this regards. It should also be able to compile Rosetta. The reason your compiler test results aren't seeing REGEX support is that the g++ it's finding is 4.8. You would want to check your conda-installed GCC 8.5 to see if that works (it should), but you may need to provide the full path to the compiler.

Regardless, it looks like you're still grabbing the GCC 4.8 when you compile Rosetta. This may be because you're compilng MPI, and Rosetta attempts to use the mpiCC compiler (versus the g++ compiler) when it compiles MPI. (Which it looks like you've discovered.) My recommendation would be to edit the source/tools/build/site.settings file to point Rosetta expicitly to the MPI-enabled compiler you wish to use. (There should be spot for it in that file.)

I'm not sure why your mpicc (plain C compiler) is 8.5 but your mpiCC (C++ compiler) is still 4.8. It may be that when you compiled OpenMPI, you only enabled the C language support, but not C++. Or there was some other issue. I'm not entirely familiar with OpenMPI compilation, so you may need to consult their documentation to see what's needed. It may just be a naming issue, and there's some other program for the C++ compiler. (Use that name in the site.settings file.)  (I note you didn't do a `which mpicc` or a `which mpiCC` tracking down where each of those is coming from may be helpful in debugging.)

Aside from the gzip library and the MPI libraries (and a few other libraries which are used in other extras compiles), Rosetta should be self-contained, and compilation should build all the needed .so files. There should be no need to copy over .so files, and I would highly recommend against it. If you're doing so, it's an indication that something is wrong with the compilation, and you'll want to fix that issue. (As it looks like you've seen, depending on the compilation settings and compiler used, the copied so file may or may not work with the rest of the Rosetta compile.)

As mentioned, I don't have a lot of experience with OpenMPI -- you'll likely need to read the documentation for it about how to configure it to use a non-system installed compiler. You'll want to iterate on that untill you get a C++ compiler which gives 8.5 when you run it with --version. Then you can put the absolute path to that (and the corresponding plain C compiler) in the site.settings file.

 

Fri, 2023-03-10 09:08
rmoretti

Thanks a lot!!!!!!Your reply really hits me.I learned a lot during the whole inspecting course!

 

Fri, 2023-03-10 19:20
ldx022

Solved:)

Sat, 2023-03-11 16:53
ldx022