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

nghttp2 Build Failure #1634

Closed
BingtongXiang opened this issue Oct 31, 2021 · 4 comments
Closed

nghttp2 Build Failure #1634

BingtongXiang opened this issue Oct 31, 2021 · 4 comments
Labels

Comments

@BingtongXiang
Copy link

I'm attempting to build nghttp2-1.47.0 but keeps failing on ubuntu 18.04
OpenSSL 1.0.2k 26 Jan 2017

`make all-recursive
make[1]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0”
Making all in lib
make[2]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib”
Making all in includes
make[3]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib/includes”

make[3]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib/includes”
make[3]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib”
CC nghttp2_pq.lo
CC nghttp2_map.lo
CC nghttp2_queue.lo
CC nghttp2_frame.lo
CC nghttp2_buf.lo
CC nghttp2_stream.lo
CC nghttp2_outbound_item.lo
CC nghttp2_session.lo
CC nghttp2_submit.lo
CC nghttp2_helper.lo
CC nghttp2_npn.lo
CC nghttp2_hd.lo
CC nghttp2_hd_huffman.lo
CC nghttp2_hd_huffman_data.lo
CC nghttp2_version.lo
CC nghttp2_priority_spec.lo
CC nghttp2_option.lo
CC nghttp2_callbacks.lo
CC nghttp2_mem.lo
CC nghttp2_http.lo
CC nghttp2_rcbuf.lo
CC nghttp2_debug.lo
CCLD libnghttp2.la
make[3]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib”
make[2]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/lib”
Making all in third-party
make[2]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/third-party”
CC url-parser/url_parser.lo
CCLD liburl-parser.la
CC llhttp/src/libllhttp_la-api.lo
CC llhttp/src/libllhttp_la-http.lo
CC llhttp/src/libllhttp_la-llhttp.lo
CCLD libllhttp.la
make[2]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/third-party”
Making all in src
make[2]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src”
Making all in includes
make[3]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src/includes”

make[3]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src/includes”
make[3]: Entering directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src”
CXX util.o
CXX http2.o
CC timegm.o
CXX app_helper.o
CC nghttp2_gzip.o
CXX nghttp.o
In file included from nghttp.cc:60:0:
tls.h:75:42: error: ‘TLS1_2_VERSION’ was not declared in this scope
constexpr auto NGHTTP2_TLS_MAX_VERSION = TLS1_2_VERSION;
^~~~~~~~~~~~~~
tls.h:75:42: note: suggested alternative: ‘TLS1_VERSION’
constexpr auto NGHTTP2_TLS_MAX_VERSION = TLS1_2_VERSION;
^~~~~~~~~~~~~~
TLS1_VERSION
nghttp.cc: In member function ‘int nghttp2::HttpClient::connection_made()’:
nghttp.cc:1107:5: error: ‘SSL_get0_next_proto_negotiated’ was not declared in this scope
SSL_get0_next_proto_negotiated(ssl, &next_proto, &next_proto_len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nghttp.cc:1107:5: note: suggested alternative: ‘BIO_get_num_renegotiates’
SSL_get0_next_proto_negotiated(ssl, &next_proto, &next_proto_len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BIO_get_num_renegotiates
nghttp.cc: In function ‘int nghttp2::{anonymous}::communicate(const string&, const string&, uint16_t, std::vector<std::tuple<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, nghttp2_data_provider*, long int, int> >, const nghttp2_session_callbacks*)’:
nghttp.cc:2271:27: error: ‘TLS_client_method’ was not declared in this scope
ssl_ctx = SSL_CTX_new(TLS_client_method());
^~~~~~~~~~~~~~~~~
nghttp.cc:2271:27: note: suggested alternative: ‘TLSv1_client_method’
ssl_ctx = SSL_CTX_new(TLS_client_method());
^~~~~~~~~~~~~~~~~
TLSv1_client_method
nghttp.cc:2325:5: error: ‘SSL_CTX_set_next_proto_select_cb’ was not declared in this scope
SSL_CTX_set_next_proto_select_cb(ssl_ctx, client_select_next_proto_cb,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nghttp.cc:2325:5: note: suggested alternative: ‘SSL_CTX_set_client_cert_cb’
SSL_CTX_set_next_proto_select_cb(ssl_ctx, client_select_next_proto_cb,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SSL_CTX_set_client_cert_cb
Makefile:1718: recipe for target 'nghttp.o' failed
make[3]: *** [nghttp.o] Error 1
make[3]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src”
Makefile:2860: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0/src”
Makefile:589: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory“/home/xbt/Desktop/360SYSTEM/Codes/360Dash-client-ctrl-no-push/nghttp2-1.46.0”
Makefile:498: recipe for target 'all' failed
make: *** [all] Error 2`

@InputOutputZ
Copy link

InputOutputZ commented Oct 31, 2021

I'm not a contributor but came across your issue, below I think might help you to resolve the issue.

Firstly, I advise to install latest openssl perhaps 1.1.1l or 3.0.0 release, if latest 3.0.0 was installed, note it will require changing deprecated or updated references to methods such as SSL_CTX_set1_curves_list to SSL_CTX_set1_groups_list in some instances during compilation when it fails and returns the files where the error takes place. To install openssl beside your current openssl installation, then set the new installation directory local and in nghttp2 configure point to it by adding the parameter option of --with-openssl=/usr/local/openssl/bin/openssl

Also adding D preceding to all nghttp2 referencing yet failed functions will resolve it, so far I came across following files src/shrpx_tls.cc and src/nghttp.cc, src/HttpServer.cc, src/h2load.cc, examples/libevent-client.c, examples/client.c, examples/libevent-server.c, and resolve it like so with DTLS_client_method and DTLS_server_method.

If needed details on how to install local openssl beside OS default one, let me know, I might be able to help.

With thanks.

@himanshumps
Copy link

himanshumps commented Aug 6, 2022

@InputOutputZ I installed openssl 1.1.1q in local directory and made the changes as suggested by you. But I get this error when I run h2load. Any insights ?

SSL_CTX_set1_curves_list failed

@InputOutputZ
Copy link

@InputOutputZ I installed openssl 1.1.1q in local directory and made the changes as suggested by you. But I get this error when I run h2load. Any insights ?

SSL_CTX_set1_curves_list failed

Please post the full error output and at which stage it was returned? Was it compiling or running and how do you run it? I tested this with openssl 3.1, perhaps you might need to give it a go.

Copy link

github-actions bot commented May 4, 2024

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@github-actions github-actions bot added the Stale label May 4, 2024
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale May 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants