Skip to content

Node 15.3.0 fails to build with shared-openssl with no-psk #36464

Description

@everett1992
  • 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildIssues and PRs related to Node.js builds or CI infrastructure.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions