diff options
author | Bartek Iwańczuk <biwanczuk@gmail.com> | 2023-06-14 00:36:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-13 22:36:16 +0000 |
commit | 60bf79c18410fd332b6b9b7c222e6d3d62bfe3f8 (patch) | |
tree | 070934eb82d906ee341d1ad4d1390f0b75860529 /cli/build.rs | |
parent | 82dd90f98d6817caadcb9b6bd81aba80b2ee848d (diff) |
Revert "refactor(core): cleanup feature flags for js source inclusion… (#19490)
… (#19463)"
This reverts commit ceb03cfb037cf7024a5048b17b508ddda59cfa05.
This is being reverted because it causes 3.5Mb increase in the binary
size,
due to runtime JS code being included in the binary, even though it's
already snapshotted.
CC @nayeemrmn
Diffstat (limited to 'cli/build.rs')
-rw-r--r-- | cli/build.rs | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/cli/build.rs b/cli/build.rs index 77e0ee1de..5ff86fa20 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -7,6 +7,7 @@ use std::sync::Arc; use deno_core::snapshot_util::*; use deno_core::Extension; use deno_core::ExtensionFileSource; +use deno_core::ExtensionFileSourceCode; use deno_runtime::deno_cache::SqliteBackedCache; use deno_runtime::deno_http::DefaultHttpPropertyExtractor; use deno_runtime::deno_kv::sqlite::SqliteDbHandler; @@ -261,11 +262,15 @@ mod ts { ) .unwrap(); - create_snapshot(CreateSnapshotOptions { + let output = create_snapshot(CreateSnapshotOptions { cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"), snapshot_path, startup_snapshot: None, - extensions: vec![deno_tsc::init(op_crate_libs, build_libs, path_dts)], + extensions: vec![deno_tsc::init_ops_and_esm( + op_crate_libs, + build_libs, + path_dts, + )], // NOTE(bartlomieju): Compressing the TSC snapshot in debug build took // ~45s on M1 MacBook Pro; without compression it took ~1s. @@ -284,6 +289,9 @@ mod ts { })), snapshot_module_load_cb: None, }); + for path in output.files_loaded_during_snapshot { + println!("cargo:rerun-if-changed={}", path.display()); + } } pub(crate) fn version() -> String { @@ -314,52 +322,55 @@ deno_core::extension!( customizer = |ext: &mut deno_core::ExtensionBuilder| { ext.esm(vec![ExtensionFileSource { specifier: "ext:cli/runtime/js/99_main.js", - code: include_str!("../runtime/js/99_main.js"), + code: ExtensionFileSourceCode::LoadedFromFsDuringSnapshot( + std::path::PathBuf::from(deno_runtime::js::PATH_FOR_99_MAIN_JS), + ), }]); } ); -fn create_cli_snapshot(snapshot_path: PathBuf) { +#[must_use = "The files listed by create_cli_snapshot should be printed as 'cargo:rerun-if-changed' lines"] +fn create_cli_snapshot(snapshot_path: PathBuf) -> CreateSnapshotOutput { // NOTE(bartlomieju): ordering is important here, keep it in sync with // `runtime/worker.rs`, `runtime/web_worker.rs` and `runtime/build.rs`! let fs = Arc::new(deno_fs::RealFs); let extensions: Vec<Extension> = vec![ - deno_webidl::deno_webidl::init(), - deno_console::deno_console::init(), - deno_url::deno_url::init(), - deno_web::deno_web::init::<PermissionsContainer>( + deno_webidl::deno_webidl::init_ops(), + deno_console::deno_console::init_ops(), + deno_url::deno_url::init_ops(), + deno_web::deno_web::init_ops::<PermissionsContainer>( deno_web::BlobStore::default(), Default::default(), ), - deno_fetch::deno_fetch::init::<PermissionsContainer>(Default::default()), - deno_cache::deno_cache::init::<SqliteBackedCache>(None), - deno_websocket::deno_websocket::init::<PermissionsContainer>( + deno_fetch::deno_fetch::init_ops::<PermissionsContainer>(Default::default()), + deno_cache::deno_cache::init_ops::<SqliteBackedCache>(None), + deno_websocket::deno_websocket::init_ops::<PermissionsContainer>( "".to_owned(), None, None, ), - deno_webstorage::deno_webstorage::init(None), - deno_crypto::deno_crypto::init(None), - deno_broadcast_channel::deno_broadcast_channel::init( + deno_webstorage::deno_webstorage::init_ops(None), + deno_crypto::deno_crypto::init_ops(None), + deno_broadcast_channel::deno_broadcast_channel::init_ops( deno_broadcast_channel::InMemoryBroadcastChannel::default(), false, // No --unstable. ), - deno_ffi::deno_ffi::init::<PermissionsContainer>(false), - deno_net::deno_net::init::<PermissionsContainer>( + deno_ffi::deno_ffi::init_ops::<PermissionsContainer>(false), + deno_net::deno_net::init_ops::<PermissionsContainer>( None, false, // No --unstable. None, ), - deno_tls::deno_tls::init(), - deno_kv::deno_kv::init( + deno_tls::deno_tls::init_ops(), + deno_kv::deno_kv::init_ops( SqliteDbHandler::<PermissionsContainer>::new(None), false, // No --unstable. ), - deno_napi::deno_napi::init::<PermissionsContainer>(), - deno_http::deno_http::init::<DefaultHttpPropertyExtractor>(), - deno_io::deno_io::init(Default::default()), - deno_fs::deno_fs::init::<PermissionsContainer>(false, fs.clone()), - deno_node::deno_node::init::<PermissionsContainer>(None, fs), - cli::init(), + deno_napi::deno_napi::init_ops::<PermissionsContainer>(), + deno_http::deno_http::init_ops::<DefaultHttpPropertyExtractor>(), + deno_io::deno_io::init_ops(Default::default()), + deno_fs::deno_fs::init_ops::<PermissionsContainer>(false, fs.clone()), + deno_node::deno_node::init_ops::<PermissionsContainer>(None, fs), + cli::init_ops_and_esm(), // NOTE: This needs to be init_ops_and_esm! ]; create_snapshot(CreateSnapshotOptions { @@ -474,7 +485,10 @@ fn main() { ts::create_compiler_snapshot(compiler_snapshot_path, &c); let cli_snapshot_path = o.join("CLI_SNAPSHOT.bin"); - create_cli_snapshot(cli_snapshot_path); + let output = create_cli_snapshot(cli_snapshot_path); + for path in output.files_loaded_during_snapshot { + println!("cargo:rerun-if-changed={}", path.display()) + } #[cfg(target_os = "windows")] { |