Skip to content
Draft
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
2 changes: 2 additions & 0 deletions .github/workflows/test-shared.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ on:
- deps/nghttp2/**
- deps/ngtcp2/**
- deps/openssl/*/**
- deps/perfetto/**
- deps/simdjson/**
- deps/sqlite/**
- deps/uv/**
Expand Down Expand Up @@ -82,6 +83,7 @@ on:
- deps/nghttp2/**
- deps/ngtcp2/**
- deps/openssl/*/**
- deps/perfetto/**
- deps/simdjson/**
- deps/sqlite/**
- deps/uv/**
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1312,6 +1312,7 @@ ifeq ($(SKIP_SHARED_DEPS), 1)
$(RM) -r $(TARNAME)/deps/ngtcp2
find $(TARNAME)/deps/openssl -maxdepth 1 -type f ! -name 'nodejs-openssl.cnf' -exec $(RM) {} +
find $(TARNAME)/deps/openssl -mindepth 1 -maxdepth 1 -type d -exec $(RM) -r {} +
$(RM) -r $(TARNAME)/deps/perfetto
$(RM) -r $(TARNAME)/deps/simdjson
$(RM) -r $(TARNAME)/deps/sqlite
$(RM) -r $(TARNAME)/deps/uv
Expand Down
33 changes: 33 additions & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,29 @@
dest='shared_openssl_libpath',
help='a directory to search for the shared OpenSSL DLLs')

shared_optgroup.add_argument('--shared-perfetto',
action='store_true',
dest='shared_perfetto',
default=None,
help='link to a shared perfetto SDK instead of the one in deps/perfetto '
'(requires --with-perfetto)')

shared_optgroup.add_argument('--shared-perfetto-includes',
action='store',
dest='shared_perfetto_includes',
help='directory containing perfetto header files')

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',
action='store',
dest='shared_perfetto_libpath',
help='a directory to search for the shared perfetto DLL')

shared_optgroup.add_argument('--shared-uvwasi',
action='store_true',
dest='shared_uvwasi',
Expand Down Expand Up @@ -2318,6 +2341,15 @@ def configure_lief(o):

configure_library('lief', o, pkgname='LIEF')

def configure_perfetto(o):
if not options.with_perfetto:
if options.shared_perfetto:
error('--shared-perfetto requires --with-perfetto')
o['variables']['node_shared_perfetto'] = b(False)
return

configure_library('perfetto', o)

def configure_sqlite(o):
o['variables']['node_use_sqlite'] = b(not options.without_sqlite)
if options.without_sqlite:
Expand Down Expand Up @@ -2827,6 +2859,7 @@ def make_bin_override():
configure_library('nghttp3', output, pkgname='libnghttp3')
configure_library('ngtcp2', output, pkgname='libngtcp2')
configure_lief(output);
configure_perfetto(output);
configure_sqlite(output);
configure_ffi(output);
configure_library('temporal_capi', output)
Expand Down
25 changes: 17 additions & 8 deletions deps/perfetto/perfetto.gyp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
'variables': {
'node_shared_perfetto%': 'false',
'perfetto_sdk_sources': [
'sdk/perfetto.cc',
'sdk/perfetto.h',
Expand All @@ -8,15 +9,23 @@
'targets': [
{
'target_name': 'perfetto_sdk',
'type': 'static_library',
'toolsets': ['host', 'target'],
'include_dirs': [ 'sdk' ],
'direct_dependent_settings': {
# Use like `#include "perfetto.h"`
'include_dirs': [ 'sdk' ],
},
'sources': [
'<@(perfetto_sdk_sources)',
'conditions': [
['node_shared_perfetto=="true"', {
# The SDK comes from the system, `include_dirs` and `libraries` are
# provided by the configure script.
'type': 'none',
}, {
'type': 'static_library',
'include_dirs': [ 'sdk' ],
'direct_dependent_settings': {
# Use like `#include "perfetto.h"`
'include_dirs': [ 'sdk' ],
},
'sources': [
'<@(perfetto_sdk_sources)',
],
}],
],
},
]
Expand Down
13 changes: 9 additions & 4 deletions node.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
'node_shared_nbytes%': 'false',
'node_shared_nghttp2%': 'false',
'node_shared_openssl%': 'false',
'node_shared_perfetto%': 'false',
'node_shared_sqlite%': 'false',
'node_shared_ffi%': 'false',
'node_shared_temporal_capi%': 'false',
Expand Down Expand Up @@ -936,8 +937,12 @@
'sources': [
'<@(node_tracing_perfetto_sources)',
],
'dependencies': [
'deps/perfetto/perfetto.gyp:perfetto_sdk',
'conditions': [
['node_shared_perfetto=="false"', {
'dependencies': [
'deps/perfetto/perfetto.gyp:perfetto_sdk',
],
}],
],
}, {
'sources': [
Expand Down Expand Up @@ -1395,7 +1400,7 @@
}, {
'sources!': [ '<@(node_cctest_quic_sources)' ],
}],
[ 'v8_use_perfetto==1', {
[ 'v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'deps/perfetto/perfetto.gyp:perfetto_sdk',
],
Expand Down Expand Up @@ -1725,7 +1730,7 @@
'NODE_USE_NODE_CODE_CACHE=1',
],
}],
[ 'v8_use_perfetto==1', {
[ 'v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'deps/perfetto/perfetto.gyp:perfetto_sdk',
],
Expand Down
4 changes: 4 additions & 0 deletions shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
withSQLite
withFFI
withSSL
withPerfetto
withTemporal
;
}
Expand All @@ -52,6 +53,7 @@ let
useSharedAda = builtins.hasAttr "ada" sharedLibDeps;
useSharedOpenSSL = builtins.hasAttr "openssl" sharedLibDeps;

useSharedPerfetto = builtins.hasAttr "perfetto" sharedLibDeps;
useSharedTemporal = builtins.hasAttr "temporal_capi" sharedLibDeps;
needsRustCompiler = withTemporal && !useSharedTemporal;

Expand All @@ -63,6 +65,7 @@ let
];
buildInputs =
pkgs.lib.optional useSharedICU icu
++ pkgs.lib.optional (withPerfetto && useSharedPerfetto) sharedLibDeps.perfetto
++ pkgs.lib.optional (withTemporal && useSharedTemporal) sharedLibDeps.temporal_capi;

# Put here only the configure flags that affect the V8 build
Expand All @@ -75,6 +78,7 @@ let
)
"--v8-${if withTemporal then "enable" else "disable"}-temporal-support"
]
++ pkgs.lib.optional (withPerfetto && useSharedPerfetto) "--shared-perfetto"
++ pkgs.lib.optional (withTemporal && useSharedTemporal) "--shared-temporal_capi"
++ pkgs.lib.optional withPerfetto "--with-perfetto";
in
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-trace-events-category-used.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ let procEnabledOutput = '';
procEnabled.stdout.on('data', (data) => procEnabledOutput += data);
procEnabled.stderr.pipe(process.stderr);
procEnabled.once('close', common.mustCall(() => {
assert.strictEqual(procEnabledOutput, 'true\n');
assert.strictEqual(procEnabledOutput, `${!process.config.variables.v8_use_perfetto}\n`);
}));

const procDisabled = cp.spawn(
Expand Down
8 changes: 8 additions & 0 deletions tools/nix/sharedLibDeps.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
withSQLite ? true,
withSSL ? true,
withFFI ? true,
withPerfetto ? false,
withTemporal ? false,
}:
{
Expand Down Expand Up @@ -50,6 +51,13 @@
// (pkgs.lib.optionalAttrs withSSL ({
inherit (import ./openssl-matrix.nix { inherit pkgs; }) openssl;
}))
// (pkgs.lib.optionalAttrs withPerfetto {
perfetto =
(pkgs.callPackage (builtins.fetchurl {
url = "https://github.com/NixOS/nixpkgs/raw/34ee2404466d25c6255a3ea1f710c80a9420d284/pkgs/by-name/pe/perfetto/package.nix";
sha256 = "0wc4p96kwxpqr8g2a6lmlfjsffrm3dc824m7hiy0q21r2papc0ik";
}) { }).sdk;
})
// (pkgs.lib.optionalAttrs withTemporal {
inherit (pkgs) temporal_capi;
})
7 changes: 4 additions & 3 deletions tools/nix/v8.nix
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,10 @@ let
../../tools/v8_gypfiles/toolchain.gypi
../../tools/v8_gypfiles/v8.gyp
]
++ lib.optionals (builtins.elem "--with-perfetto" configureFlags) [
../../deps/perfetto
]
++ lib.optional (
builtins.elem "--with-perfetto" configureFlags
&& !(builtins.elem "--shared-perfetto" configureFlags)
) ../../deps/perfetto
++ lib.optionals (icu != null) [
../../tools/icu/icu_versions.json
../../tools/icu/icu-system.gyp
Expand Down
26 changes: 17 additions & 9 deletions tools/v8_gypfiles/v8.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@
'<(V8_ROOT)/src/init/setup-isolate-full.cc',
],
'conditions': [
['v8_use_perfetto==1', {
['v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
Expand All @@ -320,7 +320,7 @@
'<!@pymod_do_main(GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_initializers.*?sources = ")',
],
'conditions': [
['v8_use_perfetto==1', {
['v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
Expand Down Expand Up @@ -492,7 +492,7 @@
},
],
'conditions': [
['v8_use_perfetto==1', {
['v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
Expand Down Expand Up @@ -986,7 +986,7 @@
'abseil.gyp:abseil',
],
'conditions': [
['v8_use_perfetto==1', {
['v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
Expand Down Expand Up @@ -1125,8 +1125,12 @@
'sources': [
'<!@pymod_do_main(GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_use_perfetto.*?sources \\+= ")',
],
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
'conditions': [
['node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
}],
],
}],
['v8_enable_snapshot_compression==1', {
Expand Down Expand Up @@ -1745,8 +1749,12 @@
'sources': [
'<!@pymod_do_main(GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_libplatform.*?v8_use_perfetto.*?sources \\+= ")',
],
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
'conditions': [
['node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
}],
],
}],
['v8_enable_system_instrumentation==1 and is_win', {
Expand Down Expand Up @@ -1856,7 +1864,7 @@
},
},
'conditions': [
['v8_use_perfetto==1', {
['v8_use_perfetto==1 and node_shared_perfetto=="false"', {
'dependencies': [
'<(perfetto_gyp_file):perfetto_sdk',
],
Expand Down
Loading