Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
'node_module_version%': '',
'node_with_ltcg%': '',
'node_shared_openssl%': 'false',
'node_shared_openssl_include_dirs%': [],
'openssl_is_boringssl%': 'false',

'node_tag%': '',
Expand Down
46 changes: 14 additions & 32 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,6 @@
shared_optgroup.add_argument('--shared-abseil-libname',
action='store',
dest='shared_abseil_libname',
default=None,
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-abseil-libpath',
Expand All @@ -319,7 +318,6 @@
shared_optgroup.add_argument('--shared-gtest-libname',
action='store',
dest='shared_gtest_libname',
default='gtest',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-gtest-libpath',
Expand All @@ -341,7 +339,6 @@
shared_optgroup.add_argument('--shared-hdr-histogram-libname',
action='store',
dest='shared_hdr_histogram_libname',
default='hdr_histogram',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-hdr-histogram-libpath',
Expand All @@ -363,7 +360,6 @@
shared_optgroup.add_argument('--shared-highway-libname',
action='store',
dest='shared_highway_libname',
default='hwy',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-highway-libpath',
Expand All @@ -385,7 +381,6 @@
shared_optgroup.add_argument('--shared-http-parser-libname',
action='store',
dest='shared_http_parser_libname',
default='llhttp',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-http-parser-libpath',
Expand All @@ -407,7 +402,6 @@
shared_optgroup.add_argument('--shared-libuv-libname',
action='store',
dest='shared_libuv_libname',
default='uv',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-libuv-libpath',
Expand All @@ -429,7 +423,6 @@
shared_optgroup.add_argument('--shared-lief-libname',
action='store',
dest='shared_lief_libname',
default='LIEF',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-lief-libpath',
Expand All @@ -451,7 +444,6 @@
shared_optgroup.add_argument('--shared-nbytes-libname',
action='store',
dest='shared_nbytes_libname',
default='nbytes',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-nbytes-libpath',
Expand All @@ -473,7 +465,6 @@
shared_optgroup.add_argument('--shared-nghttp2-libname',
action='store',
dest='shared_nghttp2_libname',
default='nghttp2',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-nghttp2-libpath',
Expand All @@ -495,7 +486,6 @@
shared_optgroup.add_argument('--shared-nghttp3-libname',
action='store',
dest='shared_nghttp3_libname',
default='nghttp3',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-nghttp3-libpath',
Expand All @@ -517,7 +507,6 @@
shared_optgroup.add_argument('--shared-ngtcp2-libname',
action='store',
dest='shared_ngtcp2_libname',
default='ngtcp2',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-ngtcp2-libpath',
Expand All @@ -539,7 +528,6 @@
shared_optgroup.add_argument('--shared-openssl-libname',
action='store',
dest='shared_openssl_libname',
default='crypto,ssl',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-openssl-libpath',
Expand All @@ -562,7 +550,6 @@
shared_optgroup.add_argument('--shared-perfetto-libname',
action='store',
dest='shared_perfetto_libname',
default='perfetto',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-perfetto-libpath',
Expand All @@ -584,7 +571,6 @@
shared_optgroup.add_argument('--shared-uvwasi-libname',
action='store',
dest='shared_uvwasi_libname',
default='uvwasi',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-uvwasi-libpath',
Expand All @@ -606,7 +592,6 @@
shared_optgroup.add_argument('--shared-zlib-libname',
action='store',
dest='shared_zlib_libname',
default='z',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-zlib-libpath',
Expand All @@ -628,7 +613,6 @@
shared_optgroup.add_argument('--shared-simdjson-libname',
action='store',
dest='shared_simdjson_libname',
default='simdjson',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-simdjson-libpath',
Expand All @@ -651,7 +635,6 @@
shared_optgroup.add_argument('--shared-simdutf-libname',
action='store',
dest='shared_simdutf_libname',
default='simdutf',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-simdutf-libpath',
Expand All @@ -673,7 +656,6 @@
shared_optgroup.add_argument('--shared-ada-libname',
action='store',
dest='shared_ada_libname',
default='ada',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-ada-libpath',
Expand All @@ -695,7 +677,6 @@
shared_optgroup.add_argument('--shared-merve-libname',
action='store',
dest='shared_merve_libname',
default='merve',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-merve-libpath',
Expand All @@ -717,7 +698,6 @@
shared_optgroup.add_argument('--shared-brotli-libname',
action='store',
dest='shared_brotli_libname',
default='brotlidec,brotlienc',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-brotli-libpath',
Expand All @@ -739,7 +719,6 @@
shared_optgroup.add_argument('--shared-cares-libname',
action='store',
dest='shared_cares_libname',
default='cares',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-cares-libpath',
Expand All @@ -761,7 +740,6 @@
shared_optgroup.add_argument('--shared-sqlite-libname',
action='store',
dest='shared_sqlite_libname',
default='sqlite3',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-sqlite-libpath',
Expand All @@ -783,7 +761,6 @@
shared_optgroup.add_argument('--shared-ffi-libname',
action='store',
dest='shared_ffi_libname',
default='ffi',
help='alternative libffi name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-ffi-libpath',
Expand All @@ -805,7 +782,6 @@
shared_optgroup.add_argument('--shared-temporal_capi-libname',
action='store',
dest='shared_temporal_capi_libname',
default='temporal_capi',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-temporal_capi-libpath',
Expand All @@ -827,7 +803,6 @@
shared_optgroup.add_argument('--shared-zstd-libname',
action='store',
dest='shared_zstd_libname',
default='zstd',
help='alternative lib name to link to [default: %(default)s]')

shared_optgroup.add_argument('--shared-zstd-libpath',
Expand Down Expand Up @@ -2195,19 +2170,21 @@ def configure_napi(output):
version = getnapibuildversion.get_napi_version()
output['variables']['napi_build_version'] = version

def configure_library(lib, output, pkgname=None, libraries_key='libraries'):
def configure_library(lib, output, pkgname=None, libraries_key='libraries', include_key='include_dirs'):
shared_lib = 'shared_' + lib
output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib))

libraries = output[libraries_key] if libraries_key in output else output['variables'][libraries_key]
include_dirs = output[include_key] if include_key in output else output['variables'][include_key]

if getattr(options, shared_lib):
(pkg_libs, pkg_cflags, pkg_libpath, _) = pkg_config(pkgname or lib)

if options.__dict__[shared_lib + '_includes']:
output['include_dirs'] += [options.__dict__[shared_lib + '_includes']]
include_dirs += [options.__dict__[shared_lib + '_includes']]
elif pkg_cflags:
stripped_flags = [flag.strip() for flag in pkg_cflags.split('-I')]
output['include_dirs'] += [flag for flag in stripped_flags if flag]
include_dirs += [flag for flag in stripped_flags if flag]

# libpath needs to be provided ahead libraries
if options.__dict__[shared_lib + '_libpath']:
Expand All @@ -2222,12 +2199,15 @@ def configure_library(lib, output, pkgname=None, libraries_key='libraries'):
elif pkg_libpath:
libraries += [pkg_libpath]

default_libs = getattr(options, shared_lib + '_libname')
user_provided_value = getattr(options, shared_lib + '_libname')

if default_libs:
libraries += [f'-l{l}' for l in default_libs.split(',')]
if user_provided_value is not None:
libraries += [f'-l{l}' for l in user_provided_value.split(',')]
elif pkg_libs:
libraries += pkg_libs.split()
elif pkg_libs is None:
pkg = (pkgname or lib)
libraries += [f'-l{l}' for l in pkg] if isinstance(pkg, list) else f'-l${pkg}'


def configure_v8(o, configs):
Expand Down Expand Up @@ -2376,7 +2356,9 @@ def without_ssl_error(option):
if options.openssl_is_fips and not options.shared_openssl:
variables['node_fipsinstall'] = b(True)

configure_library('openssl', o)
o['variables']['node_shared_openssl_include_dirs'] = []
configure_library('openssl', o, include_key='node_shared_openssl_include_dirs')
o['include_dirs'] += o['variables']['node_shared_openssl_include_dirs']

o['variables']['openssl_version'] = get_openssl_version(o)
o['variables']['openssl_is_boringssl'] = get_openssl_is_boringssl(o)
Expand Down
7 changes: 5 additions & 2 deletions test/addons/openssl-binding/binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,18 @@
}],
[ '"<(aix_variant_name)"!="OS400"', { # Not `OS400`(IBM i)
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}],
],
}, {
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}],
],
}],
['node_shared_openssl=="false"', {
'include_dirs': ['../../../deps/openssl/openssl/include'],
}, {
'include_dirs': ['<@(node_shared_openssl_include_dirs)'],
}],
['OS=="mac"', {
'xcode_settings': {
'OTHER_CFLAGS+': [
Expand Down
5 changes: 4 additions & 1 deletion test/addons/openssl-get-ssl-ctx/binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
}],
[ '"<(aix_variant_name)"!="OS400"', { # Not `OS400`(IBM i)
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}],
],
}, {
'sources': ['binding.cc'],
}],
['node_shared_openssl=="false"', {
'include_dirs': ['../../../deps/openssl/openssl/include'],
}, {
'include_dirs': ['<@(node_shared_openssl_include_dirs)'],
}],
],
}],
Expand Down
5 changes: 4 additions & 1 deletion test/addons/openssl-providers/binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
}],
[ '"<(aix_variant_name)"!="OS400"', { # Not `OS400`(IBM i)
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}],
],
}, {
'sources': ['binding.cc'],
}],
['node_shared_openssl=="false"', {
'include_dirs': ['../../../deps/openssl/openssl/include'],
}, {
'include_dirs': ['<@(node_shared_openssl_include_dirs)'],
}],
],
}],
Expand Down
5 changes: 1 addition & 4 deletions tools/nix/non-v8-deps-mock.nix
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,7 @@ symlinkJoin (finalAttrs: {
"--without-ffi"
"--without-ssl"
]
++ (lib.concatMap (sharedLibName: [
"--shared-${sharedLibName}"
"--shared-${sharedLibName}-libname="
]) (builtins.attrNames sharedLibsToMock));
++ map (sharedLibName: "--shared-${sharedLibName}") (builtins.attrNames sharedLibsToMock);

tests.pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
Expand Down
17 changes: 17 additions & 0 deletions tools/nix/pkgs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@ if builtins.currentSystem == "x86_64-darwin" then
else
nixpkgs
// {
# TODO: remove this when the pin we use has picked up https://boringssl-review.googlesource.com/c/boringssl/+/104208
boringssl =
let
inherit (nixpkgs) boringssl lib writeTextFile;
in
writeTextFile {
inherit (boringssl) name;
destination = "/lib/pkgconfig/openssl.pc";
text = ''
Name: BoringSSL
Description: BoringSSL cryptography library
Version: ${boringssl.version}
Libs: -L${lib.getLib boringssl}/lib -lcrypto -lssl
Cflags: -I${lib.getInclude boringssl}/include
'';
};

# TODO: remove pin once https://github.com/mozilla/sccache/issues/2869 is resolved
sccache = nixpkgs.callPackage (builtins.fetchurl {
url = "${repo}/raw/aff8a0b28396750446e5537a96461bc4facdb287/pkgs/by-name/sc/sccache/package.nix";
Expand Down
14 changes: 13 additions & 1 deletion tools/nix/sharedLibDeps.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
nghttp2
simdjson
simdutf
uvwasi
zlib
zstd
;
Expand All @@ -28,6 +27,19 @@
hdr-histogram = pkgs.hdrhistogram_c;
highway = pkgs.libhwy;
http-parser = pkgs.llhttp;

# TODO: remove this override once the pin we use has picked up https://github.com/NixOS/nixpkgs/pull/575002
uvwasi = pkgs.uvwasi.overrideAttrs (old: {
patches = old.patches ++ [
(pkgs.fetchpatch2 {
url = "https://github.com/nodejs/uvwasi/commit/fe602a6911207efd8dcfc070a752bcf76813c978.patch?full_index=1";
hash = "sha256-MyFvRuEhcqZR+Bz2pY9vani8U1iyQrDeni2kKKnJGEI=";
})
];

buildInputs = [ ];
propagatedBuildInputs = old.buildInputs;
});
}
// (pkgs.lib.optionalAttrs withLief {
inherit (pkgs) lief;
Expand Down
Loading