Details
Description
Running the following command to build Mesos on Ubuntu 14.04 will lead to the error shown below:
OS=ubuntu:14.04 BUILDTOOL=cmake COMPILER=gcc CONFIGURATION='--verbose --enable-libevent --enable-ssl' ENVIRONMENT='GLOG_v=1 MESOS_VERBOSE=1' JOBS=48 nice support/docker-build.sh
/mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc: In function 'tsi_result ssl_handshaker_extract_peer(tsi_handshaker*, tsi_peer*)': /mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc:1011:71: error: 'SSL_get0_alpn_selected' was not declared in this scope SSL_get0_alpn_selected(impl->ssl, &alpn_selected, &alpn_selected_len); ^ /mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc: In function 'tsi_result tsi_create_ssl_client_handshaker_factory(const tsi_ssl_pem_key_cert_pair*, const char*, const char*, const char**, uint16_t, tsi_ssl_client_handshaker_factory**)': /mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc:1417:73: error: 'SSL_CTX_set_alpn_protos' was not declared in this scope static_cast<unsigned int>(impl->alpn_protocol_list_length))) { ^ /mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc: In function 'tsi_result tsi_create_ssl_server_handshaker_factory_ex(const tsi_ssl_pem_key_cert_pair*, size_t, const char*, tsi_client_certificate_request_type, const char*, const char**, uint16_t, tsi_ssl_server_handshaker_factory**)': /mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0/src/core/tsi/ssl_transport_security.cc:1557:79: error: 'SSL_CTX_set_alpn_select_cb' was not declared in this scope server_handshaker_factory_alpn_callback, impl); ^ make[7]: *** [CMakeFiles/grpc.dir/src/core/tsi/ssl_transport_security.cc.o] Error 1 make[7]: Leaving directory `/mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0-build' make[6]: *** [CMakeFiles/grpc.dir/all] Error 2 make[6]: Leaving directory `/mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0-build' make[5]: *** [CMakeFiles/grpc.dir/rule] Error 2 make[5]: Leaving directory `/mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0-build' make[4]: *** [grpc] Error 2 make[4]: Leaving directory `/mesos/build/3rdparty/grpc-1.10.0/src/grpc-1.10.0-build' make[3]: *** [3rdparty/grpc-1.10.0/src/grpc-1.10.0-stamp/grpc-1.10.0-build] Error 2 make[3]: Leaving directory `/mesos/build' make[2]: *** [3rdparty/CMakeFiles/grpc-1.10.0.dir/all] Error 2 make[2]: *** Waiting for unfinished jobs....
The reason is that gRPC's CMake rules does not disable ALPN on systems with OpenSSL 1.0.1.