Skip to content

Commit f4bd91b

Browse files
committed
deps,build,tools: fix openssl-is-fips for ninja builds
Currently using the --openssl-is-fips configuration option in combination with --ninja is broken. This commit fixes two issues, one being an issue with the linker/version script path variable. The second is that the locations of built artifacts that differ for ninja and make. ninja: $ ./configure --openssl-is-fips --ninja $ ninja -C out/Release $ ./node --enable-fips -p 'crypto.getFips()' 1 make: $ ./configure --openssl-is-fips $ make -j8 $ ./node --enable-fips -p 'crypto.getFips()' 1 PR-URL: #40518 Refs: #40509 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Beth Griggs <[email protected]>
1 parent 73b2d3b commit f4bd91b

File tree

6 files changed

+30
-13
lines changed

6 files changed

+30
-13
lines changed

configure.py

+1
Original file line numberDiff line numberDiff line change
@@ -1980,6 +1980,7 @@ def make_bin_override():
19801980

19811981

19821982
gyp_args = ['--no-parallel', '-Dconfiguring_node=1']
1983+
gyp_args += ['-Dbuild_type=' + config['BUILDTYPE']]
19831984

19841985
if options.use_ninja:
19851986
gyp_args += ['-f', 'ninja']

deps/openssl/config/generate_gypi.pl

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
copy("$src_dir/providers/common/include/prov/der_digests.h",
101101
"$base_dir/providers/common/include/prov/") or die "Copy failed: $!";
102102

103-
my $linker_script_dir = "\$(srcdir)/deps/openssl/config/archs/$arch/$asm/providers";
103+
my $linker_script_dir = "<(PRODUCT_DIR)/../../deps/openssl/config/archs/$arch/$asm/providers";
104104
my $fips_linker_script = "";
105105
if ($fips_ld ne "") {
106106
$fips_linker_script = "$linker_script_dir/fips.ld";

deps/openssl/openssl.gyp

+9-2
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,21 @@
77
'conditions': [
88
['OS == "win"', {
99
'obj_dir_abs': '<(PRODUCT_DIR_ABS)/obj',
10+
'openssl_dir': '<(PRODUCT_DIR_ABS)/obj/lib',
1011
}],
1112
['GENERATOR == "ninja"', {
1213
'obj_dir_abs': '<(PRODUCT_DIR_ABS)/obj',
14+
'modules_dir': '<(PRODUCT_DIR_ABS)/obj/lib/openssl-modules',
15+
'openssl_dir': '<(PRODUCT_DIR_ABS)/obj/lib',
1316
}, {
1417
'obj_dir_abs%': '<(PRODUCT_DIR_ABS)/obj.target',
18+
'modules_dir': '<(PRODUCT_DIR_ABS)/obj.target/deps/openssl/lib/openssl-modules',
19+
'openssl_dir': '<(PRODUCT_DIR_ABS)/obj.target/deps/openssl',
1520
}],
1621
['OS=="mac"', {
1722
'obj_dir_abs%': '<(PRODUCT_DIR_ABS)/obj.target',
23+
'modules_dir': '<(PRODUCT_DIR_ABS)/obj.target/deps/openssl/lib/openssl-modules',
24+
'openssl_dir': '<(PRODUCT_DIR_ABS)/obj.target/deps/openssl',
1825
}],
1926
],
2027
},
@@ -49,8 +56,8 @@
4956
}],
5057
['node_shared_openssl=="false"', {
5158
'defines': [
52-
'MODULESDIR="<(obj_dir_abs)/deps/openssl/lib/openssl-modules"',
53-
'OPENSSLDIR="<(obj_dir_abs)/deps/openssl"',
59+
'MODULESDIR="<(modules_dir)"',
60+
'OPENSSLDIR="<(openssl_dir)"',
5461
]
5562
}],
5663
],

deps/openssl/openssl_common.gypi

-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
# linux and others
6363
'cflags': ['-Wno-missing-field-initializers',],
6464
'defines': [
65-
'OPENSSLDIR="<(obj_dir_abs)/deps/openssl"',
6665
'ENGINESDIR="/dev/null"',
6766
'TERMIOS',
6867
],

node.gyp

+13-7
Original file line numberDiff line numberDiff line change
@@ -347,15 +347,21 @@
347347
'variables': {
348348
'openssl-cli': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)openssl-cli<(EXECUTABLE_SUFFIX)',
349349
'provider_name': 'libopenssl-fipsmodule',
350-
'fipsmodule_internal': '<(obj_dir)/deps/openssl/<(provider_name).so',
351-
'fipsmodule': '<(obj_dir)/deps/openssl/lib/openssl-modules/fips.so',
352-
'fipsconfig': '<(obj_dir)/deps/openssl/fipsmodule.cnf',
353-
'opensslconfig_internal': '<(obj_dir)/deps/openssl/openssl.cnf',
354350
'opensslconfig': './deps/openssl/openssl/apps/openssl.cnf',
351+
'conditions': [
352+
['GENERATOR == "ninja"', {
353+
'fipsmodule_internal': '<(PRODUCT_DIR)/lib/<(provider_name).so',
354+
'fipsmodule': '<(PRODUCT_DIR)/obj/lib/openssl-modules/fips.so',
355+
'fipsconfig': '<(PRODUCT_DIR)/obj/lib/fipsmodule.cnf',
356+
'opensslconfig_internal': '<(PRODUCT_DIR)/obj/lib/openssl.cnf',
357+
}, {
358+
'fipsmodule_internal': '<(PRODUCT_DIR)/obj.target/deps/openssl/<(provider_name).so',
359+
'fipsmodule': '<(PRODUCT_DIR)/obj.target/deps/openssl/lib/openssl-modules/fips.so',
360+
'fipsconfig': '<(PRODUCT_DIR)/obj/deps/openssl/fipsmodule.cnf',
361+
'opensslconfig_internal': '<(PRODUCT_DIR)/obj.target/deps/openssl/openssl.cnf',
362+
}],
363+
],
355364
},
356-
#'dependencies': [
357-
#'./deps/openssl/openssl.gyp:openssl-fipsmodule'
358-
#],
359365
'actions': [
360366
{
361367
'action_name': 'fipsinstall',

tools/gyp/pylib/gyp/__init__.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,12 @@ def Load(
104104
default_variables.setdefault(key, val)
105105

106106
output_dir = params["options"].generator_output or params["options"].toplevel_dir
107-
default_variables.setdefault("PRODUCT_DIR_ABS", os.path.join(output_dir,
108-
default_variables['CONFIGURATION_NAME']))
107+
if (default_variables['GENERATOR'] == 'ninja'):
108+
default_variables.setdefault("PRODUCT_DIR_ABS", os.path.join(output_dir,
109+
'out', default_variables['build_type']))
110+
else:
111+
default_variables.setdefault("PRODUCT_DIR_ABS", os.path.join(output_dir,
112+
default_variables['build_type']))
109113

110114
# Give the generator the opportunity to set additional variables based on
111115
# the params it will receive in the output phase.

0 commit comments

Comments
 (0)