forked from electron/electron
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: allow unbundling of Node.js dependencies (electron#44754)
- Loading branch information
1 parent
8223ebc
commit eba0edf
Showing
2 changed files
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 83 additions & 0 deletions
83
patches/node/build_allow_unbundling_of_node_js_dependencies.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Shelley Vohr <[email protected]> | ||
Date: Sun, 17 Nov 2024 22:33:19 +0100 | ||
Subject: build: allow unbundling of Node.js dependencies | ||
|
||
Linux distributions have guidelines on using distro-provided dependencies, | ||
rather than compiling them in statically. | ||
|
||
This PR this enables downstream packagers to unbundle these dependencies. | ||
We don't need to do this for zlib, as the existing gn workflow uses the same | ||
//third_party/zlib, so unbundling zlib with Chromium tools in | ||
//build/linux/unbundle works already. This adds support for some of the others. | ||
|
||
Upstreamed at https://github.com/nodejs/node/pull/55903 | ||
|
||
diff --git a/node.gni b/node.gni | ||
index 18d58591e3d0f1f3512db00033c3410a65702864..99ec540ec41ddf5682eed7618ba87d6935b3b982 100644 | ||
--- a/node.gni | ||
+++ b/node.gni | ||
@@ -61,6 +61,12 @@ declare_args() { | ||
# 1. cross-os compilation is not supported. | ||
# 2. node_mksnapshot crashes when cross-compiling for x64 from arm64. | ||
node_use_node_snapshot = false | ||
+ | ||
+ # Allows downstream packagers (eg. Linux distributions) to build against system shared libraries. | ||
+ use_system_cares = false | ||
+ use_system_nghttp2 = false | ||
+ use_system_llhttp = false | ||
+ use_system_histogram = false | ||
} | ||
|
||
assert(!node_enable_inspector || node_use_openssl, | ||
diff --git a/unofficial.gni b/unofficial.gni | ||
index 3d8b7957e791ce2fa2a8d0937a87b6010087803d..c23922a301a721662ff34bf6e54fd26b41f25ccc 100644 | ||
--- a/unofficial.gni | ||
+++ b/unofficial.gni | ||
@@ -147,7 +147,6 @@ template("node_gn_build") { | ||
":run_node_js2c", | ||
"deps/cares", | ||
"deps/histogram", | ||
- "deps/llhttp", | ||
"deps/nbytes", | ||
"deps/nghttp2", | ||
"deps/postject", | ||
@@ -178,7 +177,17 @@ template("node_gn_build") { | ||
configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] | ||
configs += [ "//build/config/gcc:symbol_visibility_default" ] | ||
} | ||
- | ||
+ if (use_system_llhttp) { | ||
+ libs += [ "llhttp" ] | ||
+ } else { | ||
+ deps += [ "deps/llhttp" ] | ||
+ } | ||
+ if (use_system_histogram) { | ||
+ libs += [ "hdr_histogram" ] | ||
+ include_dirs += [ "/usr/include/hdr" ] | ||
+ } else { | ||
+ deps += [ "deps/histogram" ] | ||
+ } | ||
if (v8_enable_i18n_support) { | ||
deps += [ "//third_party/icu" ] | ||
} | ||
@@ -205,6 +214,19 @@ template("node_gn_build") { | ||
sources += node_inspector.node_inspector_sources + | ||
node_inspector.node_inspector_generated_sources | ||
} | ||
+ if (is_linux) { | ||
+ import("//build/config/linux/pkg_config.gni") | ||
+ if (use_system_cares) { | ||
+ pkg_config("cares") { | ||
+ packages = [ "libcares" ] | ||
+ } | ||
+ } | ||
+ if (use_system_nghttp2) { | ||
+ pkg_config("nghttp2") { | ||
+ packages = [ "libnghttp2" ] | ||
+ } | ||
+ } | ||
+ } | ||
} | ||
|
||
executable(target_name) { |