Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation on Cartesius #70

Closed
DongweiYe opened this issue Sep 4, 2020 · 2 comments
Closed

Installation on Cartesius #70

DongweiYe opened this issue Sep 4, 2020 · 2 comments
Assignees
Labels
bug Something isn't working dependency problem The issue is caused by a bug in a dependency or tool, not in MUSCLE3 itself ready for release Issue is fixed in develop and ready for the next release

Comments

@DongweiYe
Copy link

DongweiYe commented Sep 4, 2020

The installation of python version of MUSCLE3 is perfectly done. The C++ version returns some errors in protobuf library saying:

./.libs/libprotoc.so: error: undefined reference to scc_info_FileDescriptorProto_google_2fprotobuf_2fdescriptor_2eproto'
./.libs/libprotoc.so: error: undefined reference to 'descriptor_table_google_2fprotobuf_2fdescriptor_2eproto'

The problem is probably caused by a bug in the GOLD linker. We have tried to compile protobuf separately with CMake (With additional changing fold name lib64 to lib, and version 3.10.0.0 to 3.10.0).
It works. However new error comes out when compiling gRPC, saying:

protobuf can't be find

This error comes even when a system-default protobuf 3.6.1 is loaded.

@LourensVeen
Copy link
Contributor

It looks like we're hitting protocolbuffers/protobuf#5144. protocolbuffers/protobuf#5902 suggests that this is a bug in the GOLD linker, but Cartesius uses GNU LD 2.30, and has the same issue. Oddly, my laptop uses the same linker version and doesn't have the problem.

At any rate, the issue seems to be that the symbols mentioned are not declared extern "C++", while they are in the extern "C++" section of the protobuf version scripts. Apparently, on some linkers they'll match anyway, while on others they don't. The file format for version scripts isn't very well standardised, and matching symbols on a variety of tool chains is a bit of a black art.

Anyway, I've modified the MUSCLE3 build system to patch the protobuf version files before compiling to fix this issue, and with that it compiles and links on Cartesius now.

@LourensVeen LourensVeen added bug Something isn't working ready for release Issue is fixed in develop and ready for the next release labels Sep 10, 2020
@LourensVeen LourensVeen self-assigned this Sep 10, 2020
@LourensVeen LourensVeen added the dependency problem The issue is caused by a bug in a dependency or tool, not in MUSCLE3 itself label Sep 10, 2020
@LourensVeen LourensVeen changed the title Installation on Cartesuis Installation on Cartesius Sep 12, 2020
@LourensVeen
Copy link
Contributor

Released with 0.3.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working dependency problem The issue is caused by a bug in a dependency or tool, not in MUSCLE3 itself ready for release Issue is fixed in develop and ready for the next release
Projects
None yet
Development

No branches or pull requests

2 participants