1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 16:19:12 -05:00

Move //libdeno to //core/libdeno (#2015)

Fixes some sed errors introduced in c43cfe.

Unfortunately moving libdeno required splitting build.rs into two parts,
one for cli and one for core.

I've also removed the arm64 build - it's complicating things at this
re-org and we're not even testing it. I need to swing back to it and get
tools/test.py running for it.
This commit is contained in:
Ryan Dahl 2019-03-30 14:45:36 -04:00 committed by GitHub
parent ad3cbc50fb
commit c9614d86c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
74 changed files with 604 additions and 602 deletions

View file

@ -212,15 +212,15 @@ after_test:
}
# Verify that javascript and typescript files which are bundled by rollup are
# listed explicitly in BUILD.gn. This is not an air-tight check.
# listed explicitly in cli\BUILD.gn. This is not an air-tight check.
# TODO: make rollup or another bundler write a depfile.
- ps: |-
$ignore = "test_util.ts", "unit_tests.ts", "*_test.ts"
Get-ChildItem "js" -File -Force -Name |
where { $name = $_; -not ($ignore | where { $name -like $_ }) } |
where { -not (Select-String -Pattern $_ -Path BUILD.gn `
where { -not (Select-String -Pattern $_ -Path cli\BUILD.gn `
-SimpleMatch -CaseSensitive) } |
foreach { throw "$_ should be listed in BUILD.gn but isn't." }
foreach { throw "$_ should be listed in cli\BUILD.gn but isn't." }
# Verify that generated ninja files do not use absolute path names.
# If they do, it makes ccache/sccache much less effective.

View file

@ -109,30 +109,6 @@ jobs:
branch: master
repo: denoland/deno
skip-cleanup: true
- name: "cargo release linux arm64"
os: linux
dist: xenial
script:
- ./tools/lint.py
- ./tools/test_format.py
- rustup target add aarch64-unknown-linux-gnu
- sudo apt update
- |-
sudo apt -yq --no-install-suggests --no-install-recommends install \
g++-5-aarch64-linux-gnu gcc-5-aarch64-linux-gnu g++-5-multilib \
libc6-arm64-cross
- build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
- export DENO_BUILD_ARGS="target_cpu=\"arm64\" v8_target_cpu=\"arm64\""
- export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="/usr/bin/aarch64-linux-gnu-gcc-5"
- export CC_aarch64_unknown_linux_gnu="/usr/bin/aarch64-linux-gnu-gcc-5"
- cargo build -vv --target=aarch64-unknown-linux-gnu --release --locked
- cargo build -vv --target=aarch64-unknown-linux-gnu --release --tests --locked
- sudo apt -yq install qemu qemu-user binfmt-support qemu-user-binfmt
- sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
- export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
#- $CARGO_TARGET_DIR/aarch64-unknown-linux-gnu/release/deno tests/002_hello.ts
# - DENO_BUILD_MODE=release ./tools/test.py $CARGO_TARGET_DIR/aarch64-unknown-linux-gnu/release TODO(afinch7): Get the tests working
- name: "cargo release linux x86_64"
os: linux

277
BUILD.gn
View file

@ -1,184 +1,13 @@
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import("//build/toolchain/cc_wrapper.gni")
import("//build_extra/flatbuffers/flatbuffer.gni")
import("//build_extra/flatbuffers/rust/rust_flatbuffer.gni")
import("//build_extra/rust/rust.gni")
import("//third_party/v8/gni/v8.gni")
import("//third_party/v8/snapshot_toolchain.gni")
import("libdeno/deno.gni")
group("default") {
testonly = true
deps = [
":deno",
":hyper_hello",
":test_rs",
"cli:deno",
"cli:test_rs",
"core:default",
"libdeno:test_cc",
]
}
main_extern = [
"core:deno_core",
"$rust_build:ansi_term",
"$rust_build:atty",
"$rust_build:dirs",
"$rust_build:flatbuffers",
"$rust_build:futures",
"$rust_build:getopts",
"$rust_build:http",
"$rust_build:hyper",
"$rust_build:hyper_rustls",
"$rust_build:lazy_static",
"$rust_build:libc",
"$rust_build:log",
"$rust_build:rand",
"$rust_build:regex",
"$rust_build:remove_dir_all",
"$rust_build:ring",
"$rust_build:rustyline",
"$rust_build:serde_json",
"$rust_build:source_map_mappings",
"$rust_build:tempfile",
"$rust_build:tokio",
"$rust_build:tokio_executor",
"$rust_build:tokio_fs",
"$rust_build:tokio_io",
"$rust_build:tokio_process",
"$rust_build:tokio_threadpool",
"$rust_build:url",
]
if (is_win) {
main_extern += [ "$rust_build:winapi" ]
}
ts_sources = [
"js/assets.ts",
"js/blob.ts",
"js/buffer.ts",
"js/build.ts",
"js/chmod.ts",
"js/console_table.ts",
"js/compiler.ts",
"js/console.ts",
"js/copy_file.ts",
"js/core.ts",
"js/custom_event.ts",
"js/deno.ts",
"js/dir.ts",
"js/dispatch.ts",
"js/dom_types.ts",
"js/errors.ts",
"js/event.ts",
"js/event_target.ts",
"js/fetch.ts",
"js/format_error.ts",
"js/dom_file.ts",
"js/file_info.ts",
"js/files.ts",
"js/flatbuffers.ts",
"js/form_data.ts",
"js/globals.ts",
"js/headers.ts",
"js/io.ts",
"js/lib.web_assembly.d.ts",
"js/location.ts",
"js/main.ts",
"js/make_temp_dir.ts",
"js/metrics.ts",
"js/mkdir.ts",
"js/mock_builtin.js",
"js/net.ts",
"js/os.ts",
"js/permissions.ts",
"js/plugins.d.ts",
"js/process.ts",
"js/read_dir.ts",
"js/read_file.ts",
"js/read_link.ts",
"js/remove.ts",
"js/rename.ts",
"js/repl.ts",
"js/resources.ts",
"js/stat.ts",
"js/symlink.ts",
"js/text_encoding.ts",
"js/timers.ts",
"js/truncate.ts",
"js/types.ts",
"js/url.ts",
"js/url_search_params.ts",
"js/util.ts",
"js/window.ts",
"js/workers.ts",
"js/write_file.ts",
"js/performance.ts",
"js/version.ts",
"tsconfig.json",
# Listing package.json and yarn.lock as sources ensures the bundle is rebuilt
# when npm packages are added/removed or their contents changes.
"package.json",
"third_party/yarn.lock",
]
# When Cargo is driving the build, GN/Ninja are used to produce these non-Rust
# targets. Cargo handles all Rust source files and the final linking step.
group("deno_deps") {
deps = [
":msg_rs",
":snapshot_compiler",
":snapshot_deno",
"libdeno:libdeno_static_lib",
]
}
# Optimized dependencies for cross compiled builds.
# This can be removed once we get snapshots into cross compiled builds.
group("deno_deps_cross") {
testonly = true
deps = [
":compiler_bundle",
":main_bundle",
":msg_rs",
"libdeno:libdeno_static_lib",
"libdeno:test_cc",
]
}
# Reads the cargo info from Cargo.toml
deno_cargo_info = exec_script("build_extra/rust/get_cargo_info.py",
[ rebase_path("Cargo.toml", root_build_dir) ],
"json")
rust_executable("deno") {
source_root = "cli/main.rs"
extern = main_extern
deps = [
":deno_deps",
]
# Extract version from Cargo.toml
# TODO integrate this into rust.gni by allowing the rust_executable template
# to specify a cargo.toml from which it will extract a version.
crate_version = deno_cargo_info.version
inputs = [
"Cargo.toml",
]
}
rust_test("test_rs") {
source_root = "cli/main.rs"
extern = main_extern
deps = [
":deno_deps",
]
# Extract version from Cargo.toml
crate_version = deno_cargo_info.version
inputs = [
"Cargo.toml",
"core/libdeno:test_cc",
]
}
@ -189,103 +18,3 @@ rust_executable("hyper_hello") {
"$rust_build:ring",
]
}
# Generates the core TypeScript type library for deno that will be
# included in the runtime bundle
run_node("deno_runtime_declaration") {
out_dir = target_gen_dir
sources = ts_sources
outputs = [
"$out_dir/lib/lib.deno_runtime.d.ts",
]
deps = [
":msg_ts",
]
inputs = ts_sources + [
"tools/ts_library_builder/tsconfig.json",
"tools/ts_library_builder/main.ts",
"tools/ts_library_builder/build_library.ts",
"tools/ts_library_builder/ast_util.ts",
]
args = [
rebase_path("node_modules/ts-node/dist/bin.js", root_build_dir),
"--project",
rebase_path("tools/ts_library_builder/tsconfig.json"),
"--skip-ignore",
rebase_path("tools/ts_library_builder/main.ts", root_build_dir),
"--basePath",
rebase_path(".", root_build_dir),
"--inline",
rebase_path("js/lib.web_assembly.d.ts", root_build_dir),
"--buildPath",
rebase_path(root_build_dir, root_build_dir),
"--outFile",
rebase_path(outputs[0], root_build_dir),
"--silent",
]
if (is_debug) {
args += [ "--debug" ]
}
}
bundle("main_bundle") {
out_dir = "$target_gen_dir/bundle/"
out_name = "main"
deps = [
":deno_runtime_declaration",
":msg_ts",
":write_gn_args",
]
data = [
"$target_gen_dir/gn_args.txt",
]
}
bundle("compiler_bundle") {
out_dir = "$target_gen_dir/bundle/"
out_name = "compiler"
deps = [
":deno_runtime_declaration",
":msg_ts",
":write_gn_args",
]
data = [
"$target_gen_dir/gn_args.txt",
]
}
ts_flatbuffer("msg_ts") {
sources = [
"cli/msg.fbs",
]
}
rust_flatbuffer("msg_rs") {
sources = [
"cli/msg.fbs",
]
}
# Generates $target_gen_dir/snapshot_deno.bin
snapshot("snapshot_deno") {
source_root = "$target_gen_dir/bundle/main.js"
deps = [
":main_bundle",
]
}
# Generates $target_gen_dir/snapshot_compiler.bin
snapshot("snapshot_compiler") {
source_root = "$target_gen_dir/bundle/compiler.js"
deps = [
":compiler_bundle",
]
}
action("write_gn_args") {
script = "//tools/write_gn_args.py"
outputs = [
"$target_gen_dir/gn_args.txt",
]
args = [ rebase_path(outputs[0], root_build_dir) ]
}

View file

@ -1,56 +1,5 @@
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
# Dummy package info required by `cargo fetch`.
# Use tools/sync_third_party.py to install deps after editing this file.
# Deno does not build with cargo. Deno uses a build system called gn.
# See build_extra/rust/BUILD.gn for the manually built configuration of rust
# crates.
[workspace]
members = [
"./",
"cli",
"core",
]
[[bin]]
name = "deno"
path = "cli/main.rs"
[package]
name = "deno"
version = "0.3.5"
edition = "2018"
[dependencies]
deno_core = { path = "./core" }
ansi_term = "0.11.0"
atty = "0.2.11"
dirs = "1.0.5"
flatbuffers = "0.5.0"
futures = "0.1.25"
getopts = "0.2.18"
http = "0.1.16"
hyper = "0.12.25"
hyper-rustls = "0.16.1"
integer-atomics = "1.0.2"
lazy_static = "1.3.0"
libc = "0.2.51"
log = "0.4.6"
rand = "0.6.5"
regex = "1.1.2"
remove_dir_all = "0.5.1"
ring = "0.14.6"
rustyline = "3.0.0"
serde_json = "1.0.39"
source-map-mappings = "0.5.0"
tempfile = "3.0.7"
tokio = "0.1.18"
tokio-executor = "0.1.7"
tokio-fs = "0.1.6"
tokio-io = "0.1.12"
tokio-process = "0.2.3"
tokio-threadpool = "0.1.13"
url = "1.7.2"
[target.'cfg(windows)'.dependencies]
winapi = "0.3.6"

152
build.rs
View file

@ -1,152 +0,0 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
// Run "cargo build -vv" if you want to see gn output.
#![deny(warnings)]
use std::env;
use std::path::{self, Path, PathBuf};
use std::process::Command;
fn main() {
let gn_mode = if cfg!(target_os = "windows") {
// On Windows, we need to link with a release build of libdeno, because
// rust always uses the release CRT.
// TODO(piscisaureus): make linking with debug libdeno possible.
String::from("release")
} else {
// Cargo sets PROFILE to either "debug" or "release", which conveniently
// matches the build modes we support.
env::var("PROFILE").unwrap()
};
// Equivalent to target arch != host arch
let is_different_target_arch =
env::var("CARGO_CFG_TARGET_ARCH").unwrap().as_str() != env::var("HOST")
.unwrap()
.as_str()
.split("-")
.collect::<Vec<&str>>()[0];
// If we are using the same target as the host's default
// "rustup target list" should show your default target
let is_default_target =
env::var("TARGET").unwrap() == env::var("HOST").unwrap();
let cwd = env::current_dir().unwrap();
// If not using host default target the output folder will change
// target/release will become target/$TARGET/release
// Gn should also be using this output directory as well
// most things will work with gn using the default
// output directory but some tests depend on artifacts
// being in a specific directory relative to the main build output
let gn_out_path = cwd.join(format!(
"target/{}",
match is_default_target {
true => gn_mode.clone(),
false => format!("{}/{}", env::var("TARGET").unwrap(), gn_mode.clone()),
}
));
let gn_out_dir = normalize_path(&gn_out_path);
// Tell Cargo when to re-run this file. We do this first, so these directives
// can take effect even if something goes wrong later in the build process.
println!("cargo:rerun-if-env-changed=DENO_BUILD_PATH");
// TODO: this is obviously not appropriate here.
println!("cargo:rerun-if-env-changed=APPVEYOR_REPO_COMMIT");
// Detect if we're being invoked by the rust language server (RLS).
// Unfortunately we can't detect whether we're being run by `cargo check`.
let check_only = env::var_os("CARGO")
.map(PathBuf::from)
.as_ref()
.and_then(|p| p.file_stem())
.and_then(|f| f.to_str())
.map(|s| s.starts_with("rls"))
.unwrap_or(false);
// This helps Rust source files locate the snapshot, source map etc.
println!("cargo:rustc-env=GN_OUT_DIR={}", gn_out_dir);
let gn_target;
if check_only {
// When RLS is running "cargo check" to analyze the source code, we're not
// trying to build a working executable, rather we're just compiling all
// rust code. Therefore, make ninja build only 'msg_generated.rs'.
gn_target = "msg_rs";
// Enable the 'check_only' feature, which enables some workarounds in the
// rust source code to compile successfully without a bundle and snapshot
println!("cargo:rustc-cfg=feature=\"check-only\"");
} else {
// "Full" (non-RLS) build.
if is_different_target_arch {
gn_target = "deno_deps_cross";
} else {
gn_target = "deno_deps";
}
// Link with libdeno.a/.lib, which includes V8.
println!("cargo:rustc-link-search=native={}/obj/libdeno", gn_out_dir);
if cfg!(target_os = "windows") {
println!("cargo:rustc-link-lib=static=libdeno");
} else {
println!("cargo:rustc-link-lib=static=deno");
}
// Link the system libraries that libdeno and V8 depend on.
if cfg!(any(target_os = "macos", target_os = "freebsd")) {
println!("cargo:rustc-link-lib=dylib=c++");
} else if cfg!(target_os = "windows") {
for lib in vec!["dbghelp", "shlwapi", "winmm", "ws2_32"] {
println!("cargo:rustc-link-lib={}", lib);
}
}
}
// If target_arch != host_arch disable snapshots.
// v8 snapshots seem to not be compatible with binaries
// other than the ones used to gernerate them,
// so for non native architecture builds we don't
// have an easy way to generate these snapshots.
// We can't run any binary capable of generating
// compatible snapshots without emulating the
// target architecture.
if is_different_target_arch {
// no-snapshot-init is not related to v8_use_snapshots
println!("cargo:rustc-cfg=feature=\"no-snapshot-init\"");
}
if !gn_out_path.join("build.ninja").exists() {
let status = Command::new("python")
.env("DENO_BUILD_PATH", &gn_out_dir)
.env("DENO_BUILD_MODE", &gn_mode)
.arg("./tools/setup.py")
.status()
.expect("setup.py failed");
assert!(status.success());
}
let status = Command::new("python")
.env("DENO_BUILD_PATH", &gn_out_dir)
.env("DENO_BUILD_MODE", &gn_mode)
.arg("./tools/build.py")
.arg(gn_target)
.arg("-v")
.status()
.expect("build.py failed");
assert!(status.success());
}
// Utility function to make a path absolute, normalizing it to use forward
// slashes only. The returned value is an owned String, otherwise panics.
fn normalize_path<T: AsRef<Path>>(path: T) -> String {
path
.as_ref()
.to_str()
.unwrap()
.to_owned()
.chars()
.map(|c| if path::is_separator(c) { '/' } else { c })
.collect()
}

270
cli/BUILD.gn Normal file
View file

@ -0,0 +1,270 @@
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import("//build/toolchain/cc_wrapper.gni")
import("//build_extra/flatbuffers/flatbuffer.gni")
import("//build_extra/flatbuffers/rust/rust_flatbuffer.gni")
import("//build_extra/rust/rust.gni")
import("//third_party/v8/gni/v8.gni")
import("//third_party/v8/snapshot_toolchain.gni")
import("../deno.gni")
main_extern = [
"../core:deno_core",
"$rust_build:ansi_term",
"$rust_build:atty",
"$rust_build:dirs",
"$rust_build:flatbuffers",
"$rust_build:futures",
"$rust_build:getopts",
"$rust_build:http",
"$rust_build:hyper",
"$rust_build:hyper_rustls",
"$rust_build:lazy_static",
"$rust_build:libc",
"$rust_build:log",
"$rust_build:rand",
"$rust_build:regex",
"$rust_build:remove_dir_all",
"$rust_build:ring",
"$rust_build:rustyline",
"$rust_build:serde_json",
"$rust_build:source_map_mappings",
"$rust_build:tempfile",
"$rust_build:tokio",
"$rust_build:tokio_executor",
"$rust_build:tokio_fs",
"$rust_build:tokio_io",
"$rust_build:tokio_process",
"$rust_build:tokio_threadpool",
"$rust_build:url",
]
if (is_win) {
main_extern += [ "$rust_build:winapi" ]
}
ts_sources = [
"../js/assets.ts",
"../js/blob.ts",
"../js/buffer.ts",
"../js/build.ts",
"../js/chmod.ts",
"../js/console_table.ts",
"../js/compiler.ts",
"../js/console.ts",
"../js/copy_file.ts",
"../js/core.ts",
"../js/custom_event.ts",
"../js/deno.ts",
"../js/dir.ts",
"../js/dispatch.ts",
"../js/dom_types.ts",
"../js/errors.ts",
"../js/event.ts",
"../js/event_target.ts",
"../js/fetch.ts",
"../js/format_error.ts",
"../js/dom_file.ts",
"../js/file_info.ts",
"../js/files.ts",
"../js/flatbuffers.ts",
"../js/form_data.ts",
"../js/globals.ts",
"../js/headers.ts",
"../js/io.ts",
"../js/lib.web_assembly.d.ts",
"../js/location.ts",
"../js/main.ts",
"../js/make_temp_dir.ts",
"../js/metrics.ts",
"../js/mkdir.ts",
"../js/mock_builtin.js",
"../js/net.ts",
"../js/os.ts",
"../js/permissions.ts",
"../js/plugins.d.ts",
"../js/process.ts",
"../js/read_dir.ts",
"../js/read_file.ts",
"../js/read_link.ts",
"../js/remove.ts",
"../js/rename.ts",
"../js/repl.ts",
"../js/resources.ts",
"../js/stat.ts",
"../js/symlink.ts",
"../js/text_encoding.ts",
"../js/timers.ts",
"../js/truncate.ts",
"../js/types.ts",
"../js/url.ts",
"../js/url_search_params.ts",
"../js/util.ts",
"../js/window.ts",
"../js/workers.ts",
"../js/write_file.ts",
"../js/performance.ts",
"../js/version.ts",
"../tsconfig.json",
# Listing package.json and yarn.lock as sources ensures the bundle is rebuilt
# when npm packages are added/removed or their contents changes.
"../package.json",
"../third_party/yarn.lock",
]
# When Cargo is driving the build, GN/Ninja are used to produce these non-Rust
# targets. Cargo handles all Rust source files and the final linking step.
group("deno_deps") {
deps = [
":msg_rs",
":snapshot_compiler",
":snapshot_deno",
]
}
# Optimized dependencies for cross compiled builds.
# This can be removed once we get snapshots into cross compiled builds.
group("deno_deps_cross") {
testonly = true
deps = [
":compiler_bundle",
":main_bundle",
":msg_rs",
]
}
# Reads the cargo info from Cargo.toml
deno_cargo_info = exec_script(
"../build_extra/rust/get_cargo_info.py",
[ rebase_path("Cargo.toml", root_build_dir) ], "json")
rust_executable("deno") {
source_root = "main.rs"
extern = main_extern
deps = [
":deno_deps",
]
# Extract version from Cargo.toml
# TODO integrate this into rust.gni by allowing the rust_executable template
# to specify a cargo.toml from which it will extract a version.
crate_version = deno_cargo_info.version
inputs = [
"Cargo.toml",
]
}
rust_test("test_rs") {
source_root = "main.rs"
extern = main_extern
deps = [
":deno_deps",
]
# Extract version from Cargo.toml
crate_version = deno_cargo_info.version
inputs = [
"Cargo.toml",
]
}
# Generates the core TypeScript type library for deno that will be
# included in the runtime bundle
run_node("deno_runtime_declaration") {
out_dir = target_gen_dir
sources = ts_sources
outputs = [
"$out_dir/lib/lib.deno_runtime.d.ts",
]
deps = [
":msg_ts",
]
inputs = ts_sources + [
"//tools/ts_library_builder/tsconfig.json",
"//tools/ts_library_builder/main.ts",
"//tools/ts_library_builder/build_library.ts",
"//tools/ts_library_builder/ast_util.ts",
]
args = [
rebase_path("//node_modules/ts-node/dist/bin.js", root_build_dir),
"--project",
rebase_path("//tools/ts_library_builder/tsconfig.json"),
"--skip-ignore",
rebase_path("//tools/ts_library_builder/main.ts", root_build_dir),
"--basePath",
rebase_path("//", root_build_dir),
"--inline",
rebase_path("//js/lib.web_assembly.d.ts", root_build_dir),
"--buildPath",
rebase_path(root_build_dir, root_build_dir),
"--outFile",
rebase_path(outputs[0], root_build_dir),
"--silent",
]
if (is_debug) {
args += [ "--debug" ]
}
}
bundle("main_bundle") {
out_dir = "$target_gen_dir/bundle/"
out_name = "main"
deps = [
":deno_runtime_declaration",
":msg_ts",
":write_gn_args",
]
data = [
"$target_gen_dir/gn_args.txt",
]
}
bundle("compiler_bundle") {
out_dir = "$target_gen_dir/bundle/"
out_name = "compiler"
deps = [
":deno_runtime_declaration",
":msg_ts",
":write_gn_args",
]
data = [
"$target_gen_dir/gn_args.txt",
]
}
ts_flatbuffer("msg_ts") {
sources = [
"msg.fbs",
]
}
rust_flatbuffer("msg_rs") {
sources = [
"msg.fbs",
]
}
# Generates $target_gen_dir/snapshot_deno.bin
snapshot("snapshot_deno") {
source_root = "$target_gen_dir/bundle/main.js"
deps = [
":main_bundle",
]
}
# Generates $target_gen_dir/snapshot_compiler.bin
snapshot("snapshot_compiler") {
source_root = "$target_gen_dir/bundle/compiler.js"
deps = [
":compiler_bundle",
]
}
action("write_gn_args") {
script = "//tools/write_gn_args.py"
outputs = [
"$target_gen_dir/gn_args.txt",
]
args = [ rebase_path(outputs[0], root_build_dir) ]
}

51
cli/Cargo.toml Normal file
View file

@ -0,0 +1,51 @@
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
# Dummy package info required by `cargo fetch`.
# Use tools/sync_third_party.py to install deps after editing this file.
# Deno does not build with cargo. Deno uses a build system called gn.
# See build_extra/rust/BUILD.gn for the manually built configuration of rust
# crates.
[[bin]]
name = "deno"
path = "main.rs"
[package]
name = "deno"
version = "0.3.5"
edition = "2018"
[dependencies]
deno_core = { path = "../core" }
ansi_term = "0.11.0"
atty = "0.2.11"
dirs = "1.0.5"
flatbuffers = "0.5.0"
futures = "0.1.25"
getopts = "0.2.18"
http = "0.1.16"
hyper = "0.12.25"
hyper-rustls = "0.16.1"
integer-atomics = "1.0.2"
lazy_static = "1.3.0"
libc = "0.2.51"
log = "0.4.6"
rand = "0.6.5"
regex = "1.1.2"
remove_dir_all = "0.5.1"
ring = "0.14.6"
rustyline = "3.0.0"
serde_json = "1.0.39"
source-map-mappings = "0.5.0"
tempfile = "3.0.7"
tokio = "0.1.18"
tokio-executor = "0.1.7"
tokio-fs = "0.1.6"
tokio-io = "0.1.12"
tokio-process = "0.2.3"
tokio-threadpool = "0.1.13"
url = "1.7.2"
[target.'cfg(windows)'.dependencies]
winapi = "0.3.6"

20
cli/build.rs Normal file
View file

@ -0,0 +1,20 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
// Run "cargo build -vv" if you want to see gn output.
mod gn {
include!("../gn.rs");
}
fn main() {
let build = gn::Build::setup();
let gn_target = if build.check_only {
// When RLS is running "cargo check" to analyze the source code, we're not
// trying to build a working executable, rather we're just compiling all
// rust code. Therefore, make ninja build only 'msg_generated.rs'.
"cli:msg_rs"
} else {
"cli:deno_deps"
};
build.run(gn_target);
}

View file

@ -64,9 +64,9 @@ impl<'a> fmt::Display for JSErrorColor<'a> {
let e = self.0;
if e.script_resource_name.is_some() {
let script_resource_name = e.script_resource_name.as_ref().unwrap();
// Avoid showing internal code from gen/bundle/main.js
if script_resource_name != "gen/bundle/main.js"
&& script_resource_name != "gen/bundle/compiler.js"
// Avoid showing internal code from gen/cli/bundle/main.js
if script_resource_name != "gen/cli/bundle/main.js"
&& script_resource_name != "gen/cli/bundle/compiler.js"
{
if e.line_number.is_some() && e.start_column.is_some() {
assert!(e.line_number.is_some());
@ -216,14 +216,16 @@ fn builtin_source_map(_: &str) -> Option<Vec<u8>> {
#[cfg(not(feature = "check-only"))]
fn builtin_source_map(script_name: &str) -> Option<Vec<u8>> {
match script_name {
"gen/bundle/main.js" => Some(
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/bundle/main.js.map"))
.to_vec(),
),
"gen/bundle/compiler.js" => Some(
"gen/cli/bundle/main.js" => Some(
include_bytes!(concat!(
env!("GN_OUT_DIR"),
"/gen/bundle/compiler.js.map"
"/gen/cli/bundle/main.js.map"
)).to_vec(),
),
"gen/cli/bundle/compiler.js" => Some(
include_bytes!(concat!(
env!("GN_OUT_DIR"),
"/gen/cli/bundle/compiler.js.map"
)).to_vec(),
),
_ => None,
@ -381,7 +383,7 @@ mod tests {
frames: vec![StackFrame {
line: 11,
column: 12,
script_name: "gen/bundle/main.js".to_string(),
script_name: "gen/cli/bundle/main.js".to_string(),
function_name: "setLogDebug".to_string(),
is_eval: false,
is_constructor: false,

View file

@ -388,7 +388,7 @@ table OpenRes {
table Read {
rid: uint32;
// (ptr, len) is passed as second parameter to libdeno.send().
// (ptr, len) is passed as second parameter to Deno.core.send().
}
table ReadRes {

View file

@ -11,7 +11,7 @@ use std::sync::atomic::Ordering;
// GN_OUT_DIR is set either by build.rs (for the Cargo build), or by
// build_extra/rust/run.py (for the GN+Ninja build).
include!(concat!(env!("GN_OUT_DIR"), "/gen/msg_generated.rs"));
include!(concat!(env!("GN_OUT_DIR"), "/gen/cli/msg_generated.rs"));
impl<'a> From<&'a isolate_state::Metrics> for MetricsResArgs {
fn from(m: &'a isolate_state::Metrics) -> Self {

View file

@ -7,19 +7,19 @@ pub fn deno_isolate_init() -> StartupData {
debug!("Deno isolate init without snapshots.");
#[cfg(not(feature = "check-only"))]
let source_bytes =
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/bundle/main.js"));
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/cli/bundle/main.js"));
#[cfg(feature = "check-only")]
let source_bytes = vec![];
StartupData::Script(Script {
filename: "gen/bundle/main.js".to_string(),
filename: "gen/cli/bundle/main.js".to_string(),
source: std::str::from_utf8(&source_bytes[..]).unwrap().to_string(),
})
} else {
debug!("Deno isolate init with snapshots.");
#[cfg(not(any(feature = "check-only", feature = "no-snapshot-init")))]
let data =
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/snapshot_deno.bin"));
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/cli/snapshot_deno.bin"));
#[cfg(any(feature = "check-only", feature = "no-snapshot-init"))]
let data = vec![];
@ -33,20 +33,24 @@ pub fn compiler_isolate_init() -> StartupData {
if cfg!(feature = "no-snapshot-init") {
debug!("Deno isolate init without snapshots.");
#[cfg(not(feature = "check-only"))]
let source_bytes =
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/bundle/compiler.js"));
let source_bytes = include_bytes!(concat!(
env!("GN_OUT_DIR"),
"/gen/cli/bundle/compiler.js"
));
#[cfg(feature = "check-only")]
let source_bytes = vec![];
StartupData::Script(Script {
filename: "gen/bundle/compiler.js".to_string(),
filename: "gen/cli/bundle/compiler.js".to_string(),
source: std::str::from_utf8(&source_bytes[..]).unwrap().to_string(),
})
} else {
debug!("Deno isolate init with snapshots.");
#[cfg(not(any(feature = "check-only", feature = "no-snapshot-init")))]
let data =
include_bytes!(concat!(env!("GN_OUT_DIR"), "/gen/snapshot_compiler.bin"));
let data = include_bytes!(concat!(
env!("GN_OUT_DIR"),
"/gen/cli/snapshot_compiler.bin"
));
#[cfg(any(feature = "check-only", feature = "no-snapshot-init"))]
let data = vec![];

View file

@ -3,16 +3,19 @@ import("//build_extra/rust/rust.gni")
group("default") {
testonly = true
deps = [
":deno_core",
":deno_core_http_bench",
":deno_core_http_bench_test",
":deno_core_test",
]
}
deno_core_deps = [
"../libdeno:libdeno_static_lib",
"../libdeno:v8",
]
group("deno_core_deps") {
deps = [
"libdeno:libdeno_static_lib",
"libdeno:v8",
]
}
# deno_core does not depend on flatbuffers nor tokio.
main_extern = [
@ -24,13 +27,17 @@ main_extern = [
rust_crate("deno_core") {
source_root = "lib.rs"
deps = deno_core_deps
deps = [
":deno_core_deps",
]
extern = main_extern
}
rust_test("deno_core_test") {
source_root = "lib.rs"
deps = deno_core_deps
deps = [
":deno_core_deps",
]
extern = main_extern
}
@ -48,12 +55,16 @@ if (is_win) {
rust_executable("deno_core_http_bench") {
source_root = "http_bench.rs"
deps = deno_core_deps
deps = [
":deno_core_deps",
]
extern = http_bench_extern
}
rust_test("deno_core_http_bench_test") {
source_root = "http_bench.rs"
deps = deno_core_deps
deps = [
":deno_core_deps",
]
extern = http_bench_extern
}

30
core/build.rs Normal file
View file

@ -0,0 +1,30 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
// Run "cargo build -vv" if you want to see gn output.
mod gn {
include!("../gn.rs");
}
fn main() {
let build = gn::Build::setup();
println!(
"cargo:rustc-link-search=native={}/obj/core/libdeno",
build.gn_out_dir
);
if cfg!(target_os = "windows") {
println!("cargo:rustc-link-lib=static=libdeno");
} else {
println!("cargo:rustc-link-lib=static=deno");
}
// Link the system libraries that libdeno and V8 depend on.
if cfg!(any(target_os = "macos", target_os = "freebsd")) {
println!("cargo:rustc-link-lib=dylib=c++");
} else if cfg!(target_os = "windows") {
for lib in vec!["dbghelp", "shlwapi", "winmm", "ws2_32"] {
println!("cargo:rustc-link-lib={}", lib);
}
}
build.run("core:deno_core_deps");
}

View file

@ -125,7 +125,7 @@ impl<B: Behavior> Isolate<B> {
None => libdeno::deno_buf::empty(),
},
shared: shared.as_deno_buf(),
recv_cb: Self::predispatch,
recv_cb: Self::pre_dispatch,
};
let libdeno_isolate = unsafe { libdeno::deno_new(config) };
@ -166,7 +166,7 @@ impl<B: Behavior> Isolate<B> {
}
}
extern "C" fn predispatch(
extern "C" fn pre_dispatch(
user_data: *mut c_void,
control_argv0: deno_buf,
zero_copy_buf: deno_buf,
@ -612,7 +612,7 @@ mod tests {
}
#[test]
fn testdispatch() {
fn test_dispatch() {
let mut isolate = TestBehavior::setup(TestBehaviorMode::AsyncImmediate);
js_check(isolate.execute(
"filename.js",
@ -917,12 +917,12 @@ mod tests {
}
#[test]
fn overflow_res_multipledispatch_async() {
fn overflow_res_multiple_dispatch_async() {
// TODO(ry) This test is quite slow due to memcpy-ing 100MB into JS. We
// should optimize this.
let mut isolate = TestBehavior::setup(TestBehaviorMode::OverflowResAsync);
js_check(isolate.execute(
"overflow_res_multipledispatch_async.js",
"overflow_res_multiple_dispatch_async.js",
r#"
let asyncRecv = 0;
Deno.core.setAsyncHandler((buf) => {

0
core/libdeno.rs Executable file → Normal file
View file

View file

@ -1,6 +1,6 @@
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import("//deno.gni")
import("//third_party/v8/gni/v8.gni")
import("./deno.gni")
config("deno_config") {
include_dirs = [ "//third_party/v8" ] # This allows us to v8/src/base/ libraries.

View file

@ -23,8 +23,8 @@ typedef struct deno_s Deno;
// A callback to receive a message from a libdeno.send() javascript call.
// control_buf is valid for only for the lifetime of this callback.
// data_buf is valid until deno_respond() is called.
typedef void (*denorecv_cb)(void* user_data, deno_buf control_buf,
deno_buf zerop_copy_buf);
typedef void (*deno_recv_cb)(void* user_data, deno_buf control_buf,
deno_buf zerop_copy_buf);
void deno_init();
const char* deno_v8_version();
@ -34,7 +34,7 @@ typedef struct {
int will_snapshot; // Default 0. If calling deno_get_snapshot 1.
deno_buf load_snapshot; // Optionally: A deno_buf from deno_get_snapshot.
deno_buf shared; // Shared buffer to be mapped to libdeno.shared
denorecv_cb recv_cb; // Maps to libdeno.send() calls.
deno_recv_cb recv_cb; // Maps to libdeno.send() calls.
} deno_config;
// Create a new deno isolate.
@ -57,13 +57,13 @@ void deno_unlock(Deno* d);
void deno_execute(Deno* d, void* user_data, const char* js_filename,
const char* js_source);
// deno_respond sends up to one message back for every denorecv_cb made.
// deno_respond sends up to one message back for every deno_recv_cb made.
//
// If this is called during denorecv_cb, the issuing libdeno.send() in
// If this is called during deno_recv_cb, the issuing libdeno.send() in
// javascript will synchronously return the specified buf as an ArrayBuffer (or
// null if buf is empty).
//
// If this is called after denorecv_cb has returned, the deno_respond
// If this is called after deno_recv_cb has returned, the deno_respond
// will call into the JS callback specified by libdeno.recv().
//
// (Ideally, but not currently: After calling deno_respond(), the caller no

View file

@ -104,7 +104,7 @@ class DenoIsolate {
const v8::FunctionCallbackInfo<v8::Value>* current_args_;
v8::SnapshotCreator* snapshot_creator_;
void* global_import_buf_ptr_;
denorecv_cb recv_cb_;
deno_recv_cb recv_cb_;
size_t next_zero_copy_id_;
void* user_data_;
@ -170,7 +170,7 @@ static intptr_t external_references[] = {
static const deno_buf empty_buf = {nullptr, 0, nullptr, 0, 0};
Deno* NewFromSnapshot(void* user_data, denorecv_cb cb);
Deno* NewFromSnapshot(void* user_data, deno_recv_cb cb);
void InitializeContext(v8::Isolate* isolate, v8::Local<v8::Context> context);

View file

@ -46,8 +46,8 @@ global.RecvReturnBar = () => {
global.DoubleRecvFails = () => {
// Deno.core.recv is an internal function and should only be called once from the
// runtime.
Deno.core.recv((channel, msg) => assert(false));
Deno.core.recv((channel, msg) => assert(false));
Deno.core.recv((_channel, _msg) => assert(false));
Deno.core.recv((_channel, _msg) => assert(false));
};
global.SendRecvSlice = () => {

View file

@ -11,14 +11,14 @@ template("bundle") {
out_dir + out_name + ".js.map",
]
inputs = [
"js/" + out_name + ".ts",
"rollup.config.js",
"//js/" + out_name + ".ts",
"//rollup.config.js",
]
depfile = out_dir + out_name + ".d"
args = [
rebase_path("third_party/node_modules/rollup/bin/rollup", root_build_dir),
rebase_path("//third_party/node_modules/rollup/bin/rollup", root_build_dir),
"-c",
rebase_path("rollup.config.js", root_build_dir),
rebase_path("//rollup.config.js", root_build_dir),
"-i",
rebase_path(inputs[0], root_build_dir),
"-o",
@ -45,7 +45,8 @@ template("snapshot") {
"testonly",
"deps",
])
tool = "//libdeno:snapshot_creator"
# TODO(ry) Rewrite snapshot_creator in Rust.
tool = "//core/libdeno:snapshot_creator"
visibility = [ ":*" ] # Only targets in this file can depend on this.
snapshot_out_bin = "$target_gen_dir/$target_name.bin"
inputs = [

110
gn.rs Normal file
View file

@ -0,0 +1,110 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
// This is used in cli/build.rs and core/build.rs to interface with the GN build
// system (which defines the deno build).
use std::env;
use std::path::{self, Path, PathBuf};
use std::process::Command;
pub struct Build {
gn_mode: String,
pub gn_out_dir: String,
pub gn_out_path: PathBuf,
pub check_only: bool,
}
impl Build {
pub fn setup() -> Build {
let gn_mode = if cfg!(target_os = "windows") {
// On Windows, we need to link with a release build of libdeno, because
// rust always uses the release CRT.
// TODO(piscisaureus): make linking with debug libdeno possible.
String::from("release")
} else {
// Cargo sets PROFILE to either "debug" or "release", which conveniently
// matches the build modes we support.
env::var("PROFILE").unwrap()
};
// cd into workspace root.
assert!(env::set_current_dir("..").is_ok());
let cwd = env::current_dir().unwrap();
// If not using host default target the output folder will change
// target/release will become target/$TARGET/release
// Gn should also be using this output directory as well
// most things will work with gn using the default
// output directory but some tests depend on artifacts
// being in a specific directory relative to the main build output
let gn_out_path = cwd.join(format!("target/{}", gn_mode.clone()));
let gn_out_dir = normalize_path(&gn_out_path);
// Tell Cargo when to re-run this file. We do this first, so these directives
// can take effect even if something goes wrong later in the build process.
println!("cargo:rerun-if-env-changed=DENO_BUILD_PATH");
// TODO: this is obviously not appropriate here.
println!("cargo:rerun-if-env-changed=APPVEYOR_REPO_COMMIT");
// This helps Rust source files locate the snapshot, source map etc.
println!("cargo:rustc-env=GN_OUT_DIR={}", gn_out_dir);
// Detect if we're being invoked by the rust language server (RLS).
// Unfortunately we can't detect whether we're being run by `cargo check`.
let check_only = env::var_os("CARGO")
.map(PathBuf::from)
.as_ref()
.and_then(|p| p.file_stem())
.and_then(|f| f.to_str())
.map(|s| s.starts_with("rls"))
.unwrap_or(false);
if check_only {
// Enable the 'check_only' feature, which enables some workarounds in the
// rust source code to compile successfully without a bundle and snapshot
println!("cargo:rustc-cfg=feature=\"check-only\"");
}
Build {
gn_out_dir,
gn_out_path,
check_only,
gn_mode,
}
}
pub fn run(&self, gn_target: &str) {
if !self.gn_out_path.join("build.ninja").exists() {
let status = Command::new("python")
.env("DENO_BUILD_PATH", &self.gn_out_dir)
.env("DENO_BUILD_MODE", &self.gn_mode)
.arg("./tools/setup.py")
.status()
.expect("setup.py failed");
assert!(status.success());
}
// TODO(ry) call ninja directly here, not python.
let status = Command::new("python")
.env("DENO_BUILD_PATH", &self.gn_out_dir)
.env("DENO_BUILD_MODE", &self.gn_mode)
.arg("./tools/build.py")
.arg(gn_target)
.arg("-v")
.status()
.expect("build.py failed");
assert!(status.success());
}
}
// Utility function to make a path absolute, normalizing it to use forward
// slashes only. The returned value is an owned String, otherwise panics.
fn normalize_path<T: AsRef<Path>>(path: T) -> String {
path
.as_ref()
.to_str()
.unwrap()
.to_owned()
.chars()
.map(|c| if path::is_separator(c) { '/' } else { c })
.collect()
}

View file

@ -6,7 +6,7 @@
// There is a rollup plugin that will inline any module ending with `!string`
// Generated default library
import libDts from "gen/lib/lib.deno_runtime.d.ts!string";
import libDts from "gen/cli/lib/lib.deno_runtime.d.ts!string";
// Static libraries
import libEs2015Dts from "/third_party/node_modules/typescript/lib/lib.es2015.d.ts!string";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as ts from "typescript";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { window } from "./window";
import { assetSourceCode } from "./assets";
import { Console } from "./console";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { assert } from "./util";
import * as flatbuffers from "./flatbuffers";
import { sendSync } from "./dispatch";

View file

@ -1,7 +1,7 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { core } from "./core";
import * as flatbuffers from "./flatbuffers";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as errors from "./errors";
import * as util from "./util";

View file

@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { Base, ErrorKind } from "gen/msg_generated";
export { ErrorKind } from "gen/msg_generated";
import { Base, ErrorKind } from "gen/cli/msg_generated";
export { ErrorKind } from "gen/cli/msg_generated";
/** A Deno specific error. The `kind` property is set to a specific error code
* which can be used to in application logic.

View file

@ -2,7 +2,7 @@
import { assert, createResolvable, notImplemented, isTypedArray } from "./util";
import * as flatbuffers from "./flatbuffers";
import { sendAsync } from "./dispatch";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as domTypes from "./dom_types";
import { TextDecoder, TextEncoder } from "./text_encoding";
import { DenoBlob, bytesSymbol as blobBytesSymbol } from "./blob";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
/** A FileInfo describes a file and is returned by `stat`, `lstat`,
* `statSync`, `lstatSync`.

View file

@ -11,7 +11,7 @@ import {
SyncSeeker
} from "./io";
import * as dispatch from "./dispatch";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { assert } from "./util";
import * as flatbuffers from "./flatbuffers";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { sendSync } from "./dispatch";
import { assert } from "./util";

View file

@ -16,7 +16,7 @@ import { setLocation } from "./location";
import * as deno from "./deno";
// TODO(kitsonk) remove with `--types` below
import libDts from "gen/lib/lib.deno_runtime.d.ts!string";
import libDts from "gen/cli/lib/lib.deno_runtime.d.ts!string";
export default function denoMain(): void {
const startResMsg = os.start();

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";
import { assert } from "./util";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { assert } from "./util";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { ReadResult, Reader, Writer, Closer } from "./io";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { assert, notImplemented } from "./util";
import * as dispatch from "./dispatch";
import * as flatbuffers from "./flatbuffers";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { core } from "./core";
import { handleAsyncMsgFromRust, sendSync } from "./dispatch";
import * as flatbuffers from "./flatbuffers";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { sendSync } from "./dispatch";
import * as flatbuffers from "./flatbuffers";
import { assert } from "./util";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";
import { assert } from "./util";

View file

@ -1,7 +1,7 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as dispatch from "./dispatch";
import * as flatbuffers from "./flatbuffers";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import { File, close } from "./files";
import { ReadCloser, WriteCloser } from "./io";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";
import { FileInfo, FileInfoImpl } from "./file_info";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { assert } from "./util";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { assert } from "./util";
import { close } from "./files";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { assert } from "./util";
import * as dispatch from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";
import { assert } from "./util";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";
import * as util from "./util";

View file

@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { assert } from "./util";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { sendAsync, sendSync } from "./dispatch";

View file

@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import * as dispatch from "./dispatch";

View file

@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as dispatch from "./dispatch";
import * as msg from "gen/msg_generated";
import * as msg from "gen/cli/msg_generated";
import * as flatbuffers from "./flatbuffers";
import { assert, log } from "./util";
import { window } from "./window";

View file

@ -18,7 +18,7 @@ const typescriptPath = path.resolve(
__dirname,
"third_party/node_modules/typescript/lib/typescript.js"
);
const gnArgs = fs.readFileSync("gen/gn_args.txt", "utf-8").trim();
const gnArgs = fs.readFileSync("gen/cli/gn_args.txt", "utf-8").trim();
// We will allow generated modules to be resolvable by TypeScript based on
// the current build path
@ -96,7 +96,7 @@ function resolveGenerated() {
return {
name: "resolve-msg-generated",
resolveId(importee) {
if (importee.startsWith("gen/msg_generated")) {
if (importee.startsWith("gen/cli/msg_generated")) {
return path.resolve(`${importee}.ts`);
}
}

View file

@ -60,17 +60,17 @@ def get_binary_sizes(build_dir):
"deno":
os.path.join(build_dir, "deno" + executable_suffix),
"main.js":
os.path.join(build_dir, "gen/bundle/main.js"),
os.path.join(build_dir, "gen/cli/bundle/main.js"),
"main.js.map":
os.path.join(build_dir, "gen/bundle/main.js.map"),
os.path.join(build_dir, "gen/cli/bundle/main.js.map"),
"compiler.js":
os.path.join(build_dir, "gen/bundle/compiler.js"),
os.path.join(build_dir, "gen/cli/bundle/compiler.js"),
"compiler.js.map":
os.path.join(build_dir, "gen/bundle/compiler.js.map"),
os.path.join(build_dir, "gen/cli/bundle/compiler.js.map"),
"snapshot_deno.bin":
os.path.join(build_dir, "gen/snapshot_deno.bin"),
os.path.join(build_dir, "gen/cli/snapshot_deno.bin"),
"snapshot_compiler.bin":
os.path.join(build_dir, "gen/snapshot_compiler.bin")
os.path.join(build_dir, "gen/cli/snapshot_compiler.bin")
}
sizes = {}
for name, path in path_dict.items():

View file

@ -21,10 +21,10 @@ def qrun(cmd, env=None):
print "clang_format"
qrun([clang_format_path, "-i", "-style", "Google"] +
find_exts(["libdeno"], [".cc", ".h"]))
find_exts(["core"], [".cc", ".h"]))
print "gn format"
for fn in ["BUILD.gn", ".gn"] + find_exts(["build_extra", "libdeno"],
for fn in ["BUILD.gn", ".gn"] + find_exts(["build_extra", "core"],
[".gn", ".gni"]):
qrun(["third_party/depot_tools/gn", "format", fn], env=google_env())
@ -43,6 +43,7 @@ qrun(["node", prettier, "--write", "--loglevel=error"] + ["rollup.config.js"] +
print "rustfmt"
qrun([
"third_party/rustfmt/" + platform() +
"/rustfmt", "--config-path", rustfmt_config, "build.rs"
"third_party/rustfmt/" + platform() + "/rustfmt",
"--config-path",
rustfmt_config,
] + find_exts(["cli", "core"], [".rs"]))

View file

@ -16,7 +16,7 @@ eslint = os.path.join(third_party_path, "node_modules", "eslint", "bin",
os.chdir(root_path)
run([
"python", cpplint, "--filter=-build/include_subdir",
"--repository=libdeno", "--extensions=cc,h", "--recursive", "libdeno"
"--repository=core/libdeno", "--extensions=cc,h", "--recursive", "core"
])
run([

View file

@ -80,7 +80,7 @@ const libPreamble = `// Copyright 2018-2019 the Deno authors. All rights reserve
`;
// The path to the msg_generated file relative to the build path
const MSG_GENERATED_PATH = "/gen/msg_generated.ts";
const MSG_GENERATED_PATH = "/gen/cli/msg_generated.ts";
// An array of enums we want to expose pub
const MSG_GENERATED_ENUMS = ["ErrorKind"];

View file

@ -5,7 +5,7 @@ import { main as buildRuntimeLib } from "./build_library";
// this is very simplistic argument parsing, just enough to integrate into
// the build scripts, versus being very robust
let basePath = process.cwd();
let buildPath = path.join(basePath, "out", "debug");
let buildPath = path.join(basePath, "target", "debug");
let outFile = path.join(buildPath, "gen", "lib", "lib.d.ts");
let inline: string[] = [];
let debug = false;

View file

@ -25,7 +25,7 @@
"files": [
"js/lib.web_assembly.d.ts",
"core/core.d.ts",
"libdeno/libdeno.d.ts",
"core/libdeno/libdeno.d.ts",
"js/main.ts",
"js/compiler.ts"
]