mirror of
https://github.com/denoland/deno.git
synced 2025-01-11 16:42:21 -05:00
build: allow deno_runtime crate to build in docs.rs (#11602)
This commit is contained in:
parent
cd323612fd
commit
57aea228e8
3 changed files with 113 additions and 91 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -818,7 +818,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deno_runtime"
|
name = "deno_runtime"
|
||||||
version = "0.22.0"
|
version = "0.22.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atty",
|
"atty",
|
||||||
"deno_broadcast_channel",
|
"deno_broadcast_channel",
|
||||||
|
|
|
@ -2,13 +2,17 @@
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "deno_runtime"
|
name = "deno_runtime"
|
||||||
version = "0.22.0"
|
version = "0.22.2"
|
||||||
authors = ["the Deno authors"]
|
authors = ["the Deno authors"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/denoland/deno"
|
repository = "https://github.com/denoland/deno"
|
||||||
description = "Provides the deno runtime library"
|
description = "Provides the deno runtime library"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
# "fake" feature that allows to generate docs on docs.rs
|
||||||
|
docsrs = []
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "deno_runtime"
|
name = "deno_runtime"
|
||||||
path = "lib.rs"
|
path = "lib.rs"
|
||||||
|
@ -88,3 +92,6 @@ nix = "0.20.0"
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
# Used in benchmark
|
# Used in benchmark
|
||||||
test_util = { path = "../test_util" }
|
test_util = { path = "../test_util" }
|
||||||
|
|
||||||
|
[package.metadata.docs.rs]
|
||||||
|
features = ["docsrs"]
|
||||||
|
|
|
@ -1,19 +1,24 @@
|
||||||
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
||||||
|
|
||||||
use deno_core::Extension;
|
|
||||||
use deno_core::JsRuntime;
|
|
||||||
use deno_core::RuntimeOptions;
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
// TODO(bartlomieju): this module contains a lot of duplicated
|
// This is a shim that allows to generate documentation on docs.rs
|
||||||
// logic with `cli/build.rs`, factor out to `deno_core`.
|
#[cfg(not(feature = "docsrs"))]
|
||||||
fn create_snapshot(
|
mod not_docs {
|
||||||
|
use super::*;
|
||||||
|
use deno_core::Extension;
|
||||||
|
use deno_core::JsRuntime;
|
||||||
|
use deno_core::RuntimeOptions;
|
||||||
|
|
||||||
|
// TODO(bartlomieju): this module contains a lot of duplicated
|
||||||
|
// logic with `cli/build.rs`, factor out to `deno_core`.
|
||||||
|
fn create_snapshot(
|
||||||
mut js_runtime: JsRuntime,
|
mut js_runtime: JsRuntime,
|
||||||
snapshot_path: &Path,
|
snapshot_path: &Path,
|
||||||
files: Vec<PathBuf>,
|
files: Vec<PathBuf>,
|
||||||
) {
|
) {
|
||||||
// TODO(nayeemrmn): https://github.com/rust-lang/cargo/issues/3946 to get the
|
// TODO(nayeemrmn): https://github.com/rust-lang/cargo/issues/3946 to get the
|
||||||
// workspace root.
|
// workspace root.
|
||||||
let display_root = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap();
|
let display_root = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap();
|
||||||
|
@ -34,9 +39,9 @@ fn create_snapshot(
|
||||||
println!("Snapshot size: {}", snapshot_slice.len());
|
println!("Snapshot size: {}", snapshot_slice.len());
|
||||||
std::fs::write(&snapshot_path, snapshot_slice).unwrap();
|
std::fs::write(&snapshot_path, snapshot_slice).unwrap();
|
||||||
println!("Snapshot written to: {} ", snapshot_path.display());
|
println!("Snapshot written to: {} ", snapshot_path.display());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_runtime_snapshot(snapshot_path: &Path, files: Vec<PathBuf>) {
|
fn create_runtime_snapshot(snapshot_path: &Path, files: Vec<PathBuf>) {
|
||||||
let extensions: Vec<Extension> = vec![
|
let extensions: Vec<Extension> = vec![
|
||||||
deno_webidl::init(),
|
deno_webidl::init(),
|
||||||
deno_console::init(),
|
deno_console::init(),
|
||||||
|
@ -77,29 +82,9 @@ fn create_runtime_snapshot(snapshot_path: &Path, files: Vec<PathBuf>) {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
create_snapshot(js_runtime, snapshot_path, files);
|
create_snapshot(js_runtime, snapshot_path, files);
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
// Skip building from docs.rs.
|
|
||||||
if env::var_os("DOCS_RS").is_some() {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// To debug snapshot issues uncomment:
|
fn get_js_files(d: &str) -> Vec<PathBuf> {
|
||||||
// op_fetch_asset::trace_serializer();
|
|
||||||
|
|
||||||
println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap());
|
|
||||||
println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap());
|
|
||||||
let o = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
|
||||||
|
|
||||||
// Main snapshot
|
|
||||||
let runtime_snapshot_path = o.join("CLI_SNAPSHOT.bin");
|
|
||||||
|
|
||||||
let js_files = get_js_files("js");
|
|
||||||
create_runtime_snapshot(&runtime_snapshot_path, js_files);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_js_files(d: &str) -> Vec<PathBuf> {
|
|
||||||
let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
|
let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
|
||||||
let mut js_files = std::fs::read_dir(d)
|
let mut js_files = std::fs::read_dir(d)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
@ -111,4 +96,34 @@ fn get_js_files(d: &str) -> Vec<PathBuf> {
|
||||||
.collect::<Vec<PathBuf>>();
|
.collect::<Vec<PathBuf>>();
|
||||||
js_files.sort();
|
js_files.sort();
|
||||||
js_files
|
js_files
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn build_snapshot(runtime_snapshot_path: PathBuf) {
|
||||||
|
let js_files = get_js_files("js");
|
||||||
|
create_runtime_snapshot(&runtime_snapshot_path, js_files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// To debug snapshot issues uncomment:
|
||||||
|
// op_fetch_asset::trace_serializer();
|
||||||
|
|
||||||
|
println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap());
|
||||||
|
println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap());
|
||||||
|
let o = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
||||||
|
|
||||||
|
// Main snapshot
|
||||||
|
let runtime_snapshot_path = o.join("CLI_SNAPSHOT.bin");
|
||||||
|
|
||||||
|
// If we're building on docs.rs we just create
|
||||||
|
// and empty snapshot file and return, because `rusty_v8`
|
||||||
|
// doesn't actually compile on docs.rs
|
||||||
|
if env::var_os("DOCS_RS").is_some() {
|
||||||
|
let snapshot_slice = &[];
|
||||||
|
std::fs::write(&runtime_snapshot_path, snapshot_slice).unwrap();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(feature = "docsrs"))]
|
||||||
|
not_docs::build_snapshot(runtime_snapshot_path)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue