Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: cargo publish fails without absolute paths #13993

Merged
merged 3 commits into from
Mar 17, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
Revert "chore: improve build times for ext/ changes (#13927)"
This reverts commit 4e3ed37.
  • Loading branch information
ry committed Mar 16, 2022
commit 5d8eb85c586aa30355524864dc64dae56bfa6b05
10 changes: 10 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 12 additions & 2 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,20 @@ harness = false
path = "./bench/lsp_bench_standalone.rs"

[build-dependencies]
deno_broadcast_channel = { version = "0.35.0", path = "../ext/broadcast_channel" }
deno_console = { version = "0.41.0", path = "../ext/console" }
deno_core = { version = "0.123.0", path = "../core" }
deno_crypto = { version = "0.55.0", path = "../ext/crypto" }
deno_fetch = { version = "0.64.0", path = "../ext/fetch" }
deno_net = { version = "0.33.0", path = "../ext/net" }
deno_url = { version = "0.41.0", path = "../ext/url" }
deno_web = { version = "0.72.0", path = "../ext/web" }
deno_webgpu = { version = "0.42.0", path = "../ext/webgpu" }
deno_websocket = { version = "0.46.0", path = "../ext/websocket" }
deno_webstorage = { version = "0.36.0", path = "../ext/webstorage" }
regex = "=1.5.5"
serde = { version = "=1.0.133", features = ["derive"] }
zstd = { version = '=0.9.2', default-features = false }
zstd = '=0.9.2'

[target.'cfg(windows)'.build-dependencies]
winapi = "=0.3.9"
Expand Down Expand Up @@ -88,7 +98,7 @@ tokio-util = "=0.6.9"
typed-arena = "2.0.1"
uuid = { version = "=0.8.2", features = ["v4", "serde"] }
walkdir = "=2.3.2"
zstd = { version = '=0.9.2', default-features = false }
zstd = '=0.9.2'

[target.'cfg(windows)'.dependencies]
fwdansi = "=1.1.0"
Expand Down
90 changes: 60 additions & 30 deletions cli/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,33 +81,22 @@ fn create_compiler_snapshot(
) {
// libs that are being provided by op crates.
let mut op_crate_libs = HashMap::new();
op_crate_libs.insert("deno.console", "../ext/console/lib.deno_console.d.ts");
op_crate_libs.insert("deno.url", "../ext/url/lib.deno_url.d.ts");
op_crate_libs.insert("deno.web", "../ext/web/lib.deno_web.d.ts");
op_crate_libs.insert("deno.fetch", "../ext/fetch/lib.deno_fetch.d.ts");
op_crate_libs.insert("deno.webgpu", "./dts/lib.deno_webgpu.d.ts");
op_crate_libs
.insert("deno.websocket", "../ext/websocket/lib.deno_websocket.d.ts");
op_crate_libs.insert(
"deno.webstorage",
"../ext/webstorage/lib.deno_webstorage.d.ts",
);
op_crate_libs.insert("deno.crypto", "../ext/crypto/lib.deno_crypto.d.ts");
op_crate_libs.insert("deno.console", deno_console::get_declaration());
op_crate_libs.insert("deno.url", deno_url::get_declaration());
op_crate_libs.insert("deno.web", deno_web::get_declaration());
op_crate_libs.insert("deno.fetch", deno_fetch::get_declaration());
op_crate_libs.insert("deno.webgpu", deno_webgpu_get_declaration());
op_crate_libs.insert("deno.websocket", deno_websocket::get_declaration());
op_crate_libs.insert("deno.webstorage", deno_webstorage::get_declaration());
op_crate_libs.insert("deno.crypto", deno_crypto::get_declaration());
op_crate_libs.insert(
"deno.broadcast_channel",
"../ext/broadcast_channel/lib.deno_broadcast_channel.d.ts",
deno_broadcast_channel::get_declaration(),
);
op_crate_libs.insert("deno.net", "../ext/net/lib.deno_net.d.ts");
op_crate_libs.insert("deno.net", deno_net::get_declaration());

// ensure we invalidate the build properly.
for (name, path) in op_crate_libs.iter() {
let path = std::fs::canonicalize(path)
.map_err(|e| format!("{}: {}", path, e))
.unwrap();
println!(
"cargo:rustc-env={}_LIB_PATH={}",
name.replace('.', "_").to_uppercase(),
path.display()
);
for (_, path) in op_crate_libs.iter() {
println!("cargo:rerun-if-changed={}", path.display());
}

Expand Down Expand Up @@ -248,12 +237,6 @@ fn create_compiler_snapshot(
// this corresponds to `ts.ScriptKind.TypeScript`
"scriptKind": 3
}))
} else {
Err(custom_error(
"InvalidSpecifier",
format!("An invalid specifier was requested: {}", args.specifier),
))
}
} else {
Err(custom_error(
"InvalidSpecifier",
Expand Down Expand Up @@ -339,13 +322,55 @@ fn main() {
println!("cargo:rustc-env=DENO_CANARY={}", c);
}
println!("cargo:rerun-if-env-changed=DENO_CANARY");

println!("cargo:rustc-env=GIT_COMMIT_HASH={}", git_commit_hash());
println!("cargo:rerun-if-env-changed=GIT_COMMIT_HASH");

println!("cargo:rustc-env=TS_VERSION={}", ts_version());
println!("cargo:rerun-if-env-changed=TS_VERSION");

println!("cargo:rustc-env=TARGET={}", target);
println!(
"cargo:rustc-env=DENO_CONSOLE_LIB_PATH={}",
deno_console::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_URL_LIB_PATH={}",
deno_url::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_WEB_LIB_PATH={}",
deno_web::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_FETCH_LIB_PATH={}",
deno_fetch::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_WEBGPU_LIB_PATH={}",
deno_webgpu_get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_WEBSOCKET_LIB_PATH={}",
deno_websocket::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_WEBSTORAGE_LIB_PATH={}",
deno_webstorage::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_CRYPTO_LIB_PATH={}",
deno_crypto::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_BROADCAST_CHANNEL_LIB_PATH={}",
deno_broadcast_channel::get_declaration().display()
);
println!(
"cargo:rustc-env=DENO_NET_LIB_PATH={}",
deno_net::get_declaration().display()
);

println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap());
println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap());

let c = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
Expand All @@ -369,6 +394,11 @@ fn main() {
}
}

fn deno_webgpu_get_declaration() -> PathBuf {
let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
manifest_dir.join("dts").join("lib.deno_webgpu.d.ts")
}

fn get_js_files(d: &str) -> Vec<PathBuf> {
let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
let mut js_files = std::fs::read_dir(d)
Expand Down
6 changes: 6 additions & 0 deletions ext/broadcast_channel/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ use deno_core::Resource;
use deno_core::ResourceId;
use deno_core::ZeroCopyBuf;
use std::cell::RefCell;
use std::path::PathBuf;
use std::rc::Rc;

#[async_trait]
Expand Down Expand Up @@ -126,3 +127,8 @@ pub fn init<BC: BroadcastChannel + 'static>(
})
.build()
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("lib.deno_broadcast_channel.d.ts")
}
5 changes: 5 additions & 0 deletions ext/console/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

use deno_core::include_js_files;
use deno_core::Extension;
use std::path::PathBuf;

pub fn init() -> Extension {
Extension::builder()
Expand All @@ -12,3 +13,7 @@ pub fn init() -> Extension {
))
.build()
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_console.d.ts")
}
5 changes: 5 additions & 0 deletions ext/crypto/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ use sha2::Sha256;
use sha2::Sha384;
use sha2::Sha512;
use std::convert::TryFrom;
use std::path::PathBuf;

pub use rand; // Re-export rand

Expand Down Expand Up @@ -881,3 +882,7 @@ pub fn op_crypto_unwrap_key(
_ => Err(type_error("Unsupported algorithm")),
}
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_crypto.d.ts")
}
5 changes: 5 additions & 0 deletions ext/fetch/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ use std::borrow::Cow;
use std::cell::RefCell;
use std::convert::From;
use std::path::Path;
use std::path::PathBuf;
use std::pin::Pin;
use std::rc::Rc;
use tokio::io::AsyncReadExt;
Expand Down Expand Up @@ -170,6 +171,10 @@ pub trait FetchPermissions {
fn check_read(&mut self, _p: &Path) -> Result<(), AnyError>;
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_fetch.d.ts")
}

#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FetchArgs {
Expand Down
5 changes: 5 additions & 0 deletions ext/net/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use deno_core::OpState;
use deno_tls::rustls::RootCertStore;
use std::cell::RefCell;
use std::path::Path;
use std::path::PathBuf;
use std::rc::Rc;

pub trait NetPermissions {
Expand Down Expand Up @@ -60,6 +61,10 @@ pub fn check_unstable2(state: &Rc<RefCell<OpState>>, api_name: &str) {
state.borrow::<UnstableChecker>().check_unstable(api_name)
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_net.d.ts")
}

#[derive(Clone)]
pub struct DefaultTlsOptions {
pub root_cert_store: Option<RootCertStore>,
Expand Down
5 changes: 5 additions & 0 deletions ext/url/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use deno_core::url::Url;
use deno_core::Extension;
use deno_core::ZeroCopyBuf;
use std::panic::catch_unwind;
use std::path::PathBuf;

use crate::urlpattern::op_urlpattern_parse;
use crate::urlpattern::op_urlpattern_process_match_input;
Expand Down Expand Up @@ -186,3 +187,7 @@ pub fn op_url_stringify_search_params(
.finish();
Ok(search)
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_url.d.ts")
}
5 changes: 5 additions & 0 deletions ext/web/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ use serde::Serialize;
use std::borrow::Cow;
use std::cell::RefCell;
use std::fmt;
use std::path::PathBuf;
use std::usize;

use crate::blob::op_blob_create_object_url;
Expand Down Expand Up @@ -352,6 +353,10 @@ fn op_encoding_encode_into(
})
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_web.d.ts")
}

#[derive(Debug)]
pub struct DomExceptionQuotaExceededError {
pub msg: String,
Expand Down
5 changes: 5 additions & 0 deletions ext/websocket/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ use std::borrow::Cow;
use std::cell::RefCell;
use std::convert::TryFrom;
use std::fmt;
use std::path::PathBuf;
use std::rc::Rc;
use std::sync::Arc;
use tokio::net::TcpStream;
Expand Down Expand Up @@ -505,6 +506,10 @@ pub fn init<P: WebSocketPermissions + 'static>(
.build()
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_websocket.d.ts")
}

#[derive(Debug)]
pub struct DomExceptionNetworkError {
pub msg: String,
Expand Down
4 changes: 4 additions & 0 deletions ext/webstorage/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ pub fn init(origin_storage_dir: Option<PathBuf>) -> Extension {
.build()
}

pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_webstorage.d.ts")
}

struct LocalStorage(Connection);
struct SessionStorage(Connection);

Expand Down