Node 15.3.0 fails to build with shared-openssl with no-psk
- Version: 15.3.0
- Platform: Compiling on Ubuntu 18.04 but I beleive issue affects all platforms
- Subsystem: build / compile
What steps will reproduce the bug?
Compile openssl with no-psk
, compile node with shared-openssl
#!/bin/bash -x
set -euo pipefail
OPENSSL='openssl-1.1.1g'
NODE_VERSION='v15.3.0'
NODE="node-$NODE_VERSION"
main() {
[ -d "$OPENSSL" ] || curl -sS https://www.openssl.org/source/"$OPENSSL".tar.gz | tar xz
[ -d "$NODE" ] || curl -sS https://nodejs.org/dist/"$NODE_VERSION"/"$NODE".tar.gz | tar xz
configure_make_openssl
configure_make_node
}
configure_make_openssl() (
cd "$OPENSSL"
./config no-psk
make
)
configure_make_node() (
cd "$NODE"
export LD_LIBRARY_PATH=$(readlink -f ../$OPENSSL)
./configure \
--shared-openssl \
--shared-openssl-includes "$(readlink -f ../"$OPENSSL"/include)" \
--shared-openssl-libpath "$(readlink -f ../"$OPENSSL")"
make
)
main "$@"
no-psk errors
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::SelectSNIContextCallback(ssl_st*, int*, void*)':
crypto_tls.cc:(.text+0x487b): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::CertCbDone(v8::FunctionCallbackInfo<v8::Value> const&)':
crypto_tls.cc:(.text+0x4c27): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
collect2: error: ld returned 1 exit status
embedtest.target.mk:200: recipe for target '/node-v15.3.0/out/Release/embedtest' failed
make[1]: *** [/node-v15.3.0/out/Release/embedtest] Error 1
make[1]: *** Waiting for unfinished jobs....
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::SelectSNIContextCallback(ssl_st*, int*, void*)':
crypto_tls.cc:(.text+0x487b): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::CertCbDone(v8::FunctionCallbackInfo<v8::Value> const&)':
crypto_tls.cc:(.text+0x4c27): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
collect2: error: ld returned 1 exit status
mkcodecache.target.mk:203: recipe for target '/node-v15.3.0/out/Release/mkcodecache' failed
make[1]: *** [/node-v15.3.0/out/Release/mkcodecache] Error 1
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::SelectSNIContextCallback(ssl_st*, int*, void*)':
crypto_tls.cc:(.text+0x487b): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
/node-v15.3.0/out/Release/obj.target/libnode/src/crypto/crypto_tls.o: In function `node::crypto::TLSWrap::CertCbDone(v8::FunctionCallbackInfo<v8::Value> const&)':
crypto_tls.cc:(.text+0x4c27): undefined reference to `node::crypto::TLSWrap::SetCACerts(node::crypto::SecureContext*)'
Node seems to aim to be compatible with no-psk because it checks for the definition of OPENSSL_NO_PSK