nodejs / help

:sparkles: Need help with Node.js? File an Issue here. :rocket:
1.46k stars 279 forks source link

error: 'EVP_R_FIPS_MODE_NOT_SUPPORTED' was not declared #4167

Closed MitchellBot closed 1 year ago

MitchellBot commented 1 year ago

Details

I'm working on a Yocto-based embedded OS for a product that requires NodeJS < 15 and I have created a recipe to build NodeJS 14.21.3 based on Honister's 14.17.1 recipe.

The OS is being built with OpenSSL 3.0.8.

On top of many warnings I'm seeing in the compilation output regarding things being "deprecated: Since OpenSSL 3.0", the build is failing with two errors:

| ../src/node.cc: In function 'node::InitializationResult node::InitializeOncePerProcess(int, char**)': | ../src/node.cc:1082:28: error: 'EVP_R_FIPS_MODE_NOT_SUPPORTED' was not declared in this scope; did you mean 'EVP_R_METHOD_NOT_SUPPORTED'? | 1082 | if (ossl_error_code != EVP_R_FIPS_MODE_NOT_SUPPORTED) { | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | EVP_R_METHOD_NOT_SUPPORTED | ../src/node.cc:1094:7: error: 'FIPS_mode' was not declared in this scope | 1094 | if (FIPS_mode()) { | | ^~~~~~~~~

I assume here that the issue is that I'm using a too-new version of OpenSSL that removed things that NodeJS was relying upon, but correct me if I'm wrong.

Is there a simple way to make this work without downgrading OpenSSL?

Node.js version

14.21.3

Example code

The build recipe that includes all the functions to build nodejs is here: http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb?h=honister I've only changed the version and checksum information.

Operating system

Poky Linux

Scope

Build

Module and version

Not applicable.

richardlau commented 1 year ago

I assume here that the issue is that I'm using a too-new version of OpenSSL that removed things that NodeJS was relying upon, but correct me if I'm wrong.

Is there a simple way to make this work without downgrading OpenSSL?

That would be my guess too. Unfortunately you're on your own as we've never attempted to build Node.js 14 with OpenSSL 3.0.