traxexx / Raremetal2

An updated version of meta-analysis software Raremetal
4 stars 2 forks source link

Compile error #2

Open josemq opened 6 years ago

josemq commented 6 years ago

Hi I'm getting the following error compiling:

make[1]: Entering directory '/mnt/mfs/cluster/bin/Raremetal2/libStatGen/samtools' ar -cru ../libStatGen.a obj/bgzf.o obj/knetfile.o ar: u' modifier ignored sinceD' is the default (see `U') ar: ../libStatGen.a: Malformed archive ../Makefiles/Makefile.lib:37: recipe for target '../libStatGen.a' failed make[1]: [../libStatGen.a] Error 1 make[1]: Leaving directory '/mnt/mfs/cluster/bin/Raremetal2/libStatGen/samtools' Makefiles/Makefile.base:15: recipe for target 'samtools' failed make: [samtools] Error 2

abought commented 6 years ago

Thanks for your error report. I have confirmed the compile errors you are seeing.

Although I do not have commit access to this repo, I have posted a branch elsewhere with fixes that I believe should help resolve your problem. It addresses the following three items:

If your problem is not covered by the above, see the wiki compiling instructions and FAQ. I'd be happy to update the documentation with any missing information.

I realize that having so many copies of the code is a bit confusing- so, this afternoon I will work on copying this repo over to our statgen GitHub organization, which will be the future home of all new development. I'll send that URL along shortly and we'll try to change any links that point here.

abought commented 6 years ago

Here is the link for the new home of this repo as mentioned earlier: https://github.com/statgen/Raremetal2

If you work from that repo as your starting point, the master branch should incorporate the compile bugfixes mentioned above. If this works for you, we can close this issue.

josemq commented 6 years ago

Hi Andy,

Thanks for the response.. Just tried your instructions and the link you sent but now I get a different error:

g++ -O4 -pipe -Wall -I../include -I. -DZLIB_AVAILABLE__ -D_FILE_OFFSET_BITS=64 -DSTDC_LIMIT_MACROS -o obj/VcfFileReader.o -c VcfFileReader.cpp -DVERSION="\"1.0.0\"" In file included from VcfRecord.h:29:0, from VcfFileReader.h:24, from VcfFileReader.cpp:20: VcfRecordDiscardRules.h:72:18: error: ‘unordered_set’ in namespace ‘std’ does not name a template type typedef std::unordered_set IDList; ^~~~~ VcfRecordDiscardRules.h:80:17: error: ‘IDList’ has not been declared bool setIDs(IDList& idlist, const char* filename); ^~ VcfRecordDiscardRules.h:82:5: error: ‘IDList’ does not name a type IDList myExcludeIDs; ^~ VcfRecordDiscardRules.h:83:5: error: ‘IDList’ does not name a type IDList myIncludeIDs; ^~ VcfRecordDiscardRules.h: In constructor ‘VcfRecordDiscardRules::VcfRecordDiscardRules()’: VcfRecordDiscardRules.h:33:11: error: class ‘VcfRecordDiscardRules’ does not have any field named ‘myExcludeIDs’ : myExcludeIDs(), ^~~~ VcfRecordDiscardRules.h:34:11: error: class ‘VcfRecordDiscardRules’ does not have any field named ‘myIncludeIDs’ myIncludeIDs(), ^~~~ ../Makefiles/Makefile.common:81: recipe for target 'obj/VcfFileReader.o' failed make[4]: [obj/VcfFileReader.o] Error 1 Makefiles/Makefile.base:15: recipe for target 'vcf' failed make[3]: [vcf] Error 2 ../../libStatGen/Makefiles/Makefile.ext:50: recipe for target '../../libStatGen/libStatGen.a' failed make[2]: [../../libStatGen/libStatGen.a] Error 2 make[2]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/libRareMetal/mvtnorm' ../libStatGen/Makefiles/Makefile.base:15: recipe for target 'mvtnorm' failed make[1]: [mvtnorm] Error 2 make[1]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/libRareMetal' libStatGen/Makefiles/Makefile.base:15: recipe for target 'libRareMetal' failed make: *** [libRareMetal] Error 2

On Tue, Mar 20, 2018 at 12:41 PM, Andy Boughton notifications@github.com wrote:

Here is the link for the new home of this repo as mentioned earlier: https://github.com/statgen/Raremetal2

If you work from that repo as your starting point, the master branch should incorporate the compile bugfixes mentioned above. If this works for you, we can close this issue.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-374669014, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODgyORKvlm0WAE_FIsgEmnlk3MqJuks5tgTFOgaJpZM4SwvCm .

abought commented 6 years ago

Hmm. To help narrow this down, could you please provide the following information?

  1. What OS distribution + version are you using? cat /etc/*-release (officially we support linux versions, tested on Ubuntu 14.04. This version does not support Mac OS)
  2. What compiler version are you using? gcc --version (branch was tested using gcc 4.8.5 and gcc 5.5.0)
  3. Did you run make clean in the top-level directory, and also in libStatGen and libRaremetal folders?
josemq commented 6 years ago

Okay, thanks..

  1. Debian 9.2
  2. gcc (Debian 6.3.0-18) 6.3.0 20170516
  3. Yes, ran make clean on top-level directory, and also in libStatGen and libRaremetal folders..

I also tried setting env variables CC and CXX for gcc-4.8 but still did not work..

On Tue, Mar 20, 2018 at 1:28 PM, Andy Boughton notifications@github.com wrote:

Hmm. To help narrow this down, could you please provide the following information?

  1. What OS distribution + version are you using? cat /etc/*-release (officially we support linux versions, tested on Ubuntu 14.04. This version does not support Mac OS)
  2. What compiler version are you using? gcc --version (branch was tested using gcc 4.8.5 and gcc 5.5.0)
  3. Did you run make clean in the top-level directory, and also in libStatGen and libRaremetal folders?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-374686000, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODgJ2cMEjkNzStlImhgPpfhPmbcX4ks5tgTwtgaJpZM4SwvCm .

abought commented 6 years ago

Looking at your error, the following ticket may be relevant: https://github.com/statgen/verifyBamID/issues/8

It seems that the libStatGen version bundled with Raremetal2 is quite significantly out of date, and you may benefit from adding the following change to your code before compiling: https://github.com/statgen/libStatGen/commit/29805376613c680dee344726ce5c583daf11872f

The cluster is being a bit slow right now, but I will try to compile with GCC 6 later to verify. We'll keep updating the main repo with any changes that you find are required to help it run; long term, libStatGen will be removed from the repo entirely as we rework the build process.

josemq commented 6 years ago

Okay thanks..

Where exactly will I add this change?

On Tue, Mar 20, 2018 at 4:01 PM, Andy Boughton notifications@github.com wrote:

Looking at your error, the following ticket may be relevant: statgen/verifyBamID#8 https://github.com/statgen/verifyBamID/issues/8

It seems that the libStatGen version bundled with Raremetal2 is quite significantly out of date, and you may benefit from adding the following change to your code before compiling: statgen/libStatGen@2980537 https://github.com/statgen/libStatGen/commit/29805376613c680dee344726ce5c583daf11872f

The cluster is being a bit slow right now, but I will try to compile with GCC 6 later to verify. We'll keep updating the main repo with any changes that you find are required to help it run; long term, libStatGen will be removed from the repo entirely as we rework the build process.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-374737065, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODmy15d4nCT9GSqzbCA_j6bS3NYu0ks5tgWAwgaJpZM4SwvCm .

abought commented 6 years ago

Where exactly will I add this change?

The diff above may be a helpful guide. You'll want to manually add the new lines (shown in green) at the specified line numbers. Relative to the Raremetal2 root, you will be editing the file libStatGen/vcf/VcfRecordDiscardRules.h.

Line 22 before the change will read: #include <set>

After the change. lines 22-27 will read:

#ifdef __GXX_EXPERIMENTAL_CXX0X__
#include <unordered_set>
#else
#include <set>
#include <set>
#endif

I apologize for asking you to edit the code manually- I'm currently working on wrangling the correct GCC version onto our cluster, so as to avoid pushing code changes before they can be verified.

josemq commented 6 years ago

Okay that fixed that error but now I'm getting this:

PDF.cpp: In member function ‘void PDF::OpenFile(const char*)’: PDF.cpp:41:80: error: narrowing conversion of ‘199’ from ‘int’ to ‘char’ inside { } [-Wnarrowing] char signature[] = {'%', '%', 'G' + 128, 'R' + 128, 'A' + 128, '\n', '\n', 0};

^ PDF.cpp:41:80: error: narrowing conversion of ‘210’ from ‘int’ to ‘char’ inside { } [-Wnarrowing] PDF.cpp:41:80: error: narrowing conversion of ‘193’ from ‘int’ to ‘char’ inside { } [-Wnarrowing] ../../libStatGen/Makefiles/Makefile.common:81: recipe for target 'obj/PDF.o' failed make[2]: [obj/PDF.o] Error 1 make[2]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/libRareMetal/pdf' ../libStatGen/Makefiles/Makefile.base:15: recipe for target 'pdf' failed make[1]: [pdf] Error 2 make[1]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/libRareMetal' libStatGen/Makefiles/Makefile.base:15: recipe for target 'libRareMetal' failed make: *** [libRareMetal] Error 2

On Tue, Mar 20, 2018 at 4:50 PM, Andy Boughton notifications@github.com wrote:

Where exactly will I add this change?

The diff above may be a helpful guide. You'll want to manually add the new lines (shown in green) at the specified line numbers. Relative to the Raremetal2 root, you will be editing the file libStatGen/vcf/ VcfRecordDiscardRules.h https://github.com/traxexx/Raremetal2/blob/master/libStatGen/vcf/VcfRecordDiscardRules.h .

Line 22 before the change will read:

include

After the change. lines 22-27 will read:

ifdef GXX_EXPERIMENTAL_CXX0X

include

else

include

include

endif

I apologize for asking you to edit the code manually- I'm currently working on wrangling the correct GCC version onto our cluster, so as to avoid pushing code changes before they can be verified.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-374751930, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODqZvHn4oejUcNCKWJrDWTNkzHwMJks5tgWuugaJpZM4SwvCm .

abought commented 6 years ago

Okay that fixed that error but now I'm getting this:

Thanks for your patience. I am still working on getting gcc6 on our cluster, but here is a branch with the changes we've found so far (including a fix for your pdf issue in the last comment): https://github.com/abought/Raremetal2/tree/feature/gh2-compiling

I'll resume working on this tomorrow and keep you posted with updates.

josemq commented 6 years ago

No worries, I appreciate all your help with this..

Tried the last link you sent and it goes farther but now I get the following error:

/usr/bin/ld: ../../libRareMetal//libRmath.a(gamma.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

/usr/bin/ld: final link failed: Nonrepresentable section on output

collect2: error: ld returned 1 exit status

../../libStatGen/Makefiles/Makefile.ext:40: recipe for target '../../bin/raremetalTest' failed

make[2]: *** [../../bin/raremetalTest] Error 1

make[2]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/raremetal/src'

../libStatGen/Makefiles/Makefile.base:15: recipe for target 'src' failed

make[1]: *** [src] Error 2

make[1]: Leaving directory '/mnt/mfs/cluster/bin/RareMetal2/raremetal'

libStatGen/Makefiles/Makefile.base:15: recipe for target 'raremetal' failed

make: *** [raremetal] Error 2

On Tue, Mar 20, 2018 at 6:24 PM, Andy Boughton notifications@github.com wrote:

Okay that fixed that error but now I'm getting this:

Thanks for your patience. I am still working on getting gcc6 on our cluster, but here is a branch with the changes we've found so far (including a fix for your pdf issue in the last comment): https://github.com/abought/Raremetal2/tree/feature/gh2-compiling

I'll resume working on this tomorrow and keep you posted with updates.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-374777847, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODt4yiWDcKHcgrefEh-DqrlCOJyKkks5tgYGUgaJpZM4SwvCm .

jonathonl commented 6 years ago

The Rmath static library checked into this repo is compiled with position dependent code. It needs to be deleted. I'm assuming a shared library is trying to link against it.

Steps to fix:

  1. Check if r-mathlib is installed on the system (dpkg -s r-mathlib | grep Status).
  2. Install it if it is not (sudo apt-get install r-mathlib).
  3. Delete libRmath.a (rm libRareMetal/libRmath.a).
  4. Remove references to that specific file from libRareMetal Makefiles, e.g., comment out the lines outputed from grep -R "libRmath.a" libRareMetal.
  5. Set the RMATH_LIB variable in raremetal/src/Makefile and raremetalworker/src/Makefile to '-lRmath'
  6. make clean && make

All of this should be fixed in a future version.

abought commented 6 years ago

I've updated the sample branch linked above to incorporate Jonathon's recommended changes.

I wasn't able to get GCC on our cluster, but I was able to reproduce the bug in a clean Debian 9/ GCC 6.3 environment (and verify that the fix builds to completion for me) by using docker to create a development-only environment. (I don't recommend using the docker image for real analysis- it is solely there for development)

Most computing clusters should have R / libRMath installed, but it not, follow Jonathon's instructions above to add this dependency.

josemq commented 6 years ago

Thanks a lot for all your help with this!

The user is currently testing it out...

On Wed, Mar 21, 2018 at 5:20 PM, Andy Boughton notifications@github.com wrote:

I've updated the sample branch linked above to incorporate Jonathon's recommended changes.

I wasn't able to get GCC on our cluster, but I was able to reproduce the bug in a clean Debian 9/ GCC 6.3 environment (and verify that the fix builds to completion for me) by using docker to create a development-only environment. (I don't recommend using the docker image for real analysis- it is solely there for development)

Most computing clusters should have R / libRMath installed, but it not, follow Jonathon's instructions above to add this dependency.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/traxexx/Raremetal2/issues/2#issuecomment-375099741, or mute the thread https://github.com/notifications/unsubscribe-auth/AcsODg111A6bMz7CsbuPxQ9Zx9PBiq0Oks5tgsQ0gaJpZM4SwvCm .