From 33dbd4388c86e0ec6f0ecdc64733f753bfe350aa Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Apr 2021 11:39:11 -0700 Subject: [PATCH] use tokio's File with a cap-std Dir --- Cargo.lock | 7 +++++++ crates/wasi-common/tokio/Cargo.toml | 12 +++++++++++- crates/wasi-common/tokio/src/lib.rs | 10 +++++----- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b7e1aa02e4..3f5d294b2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3138,7 +3138,14 @@ dependencies = [ name = "wasi-tokio" version = "0.26.0" dependencies = [ + "cap-fs-ext", + "cap-std", + "cap-time-ext", + "fs-set-times", + "system-interface", + "tempfile", "tokio", + "unsafe-io", "wasi-cap-std-sync", "wasi-common", "wiggle", diff --git a/crates/wasi-common/tokio/Cargo.toml b/crates/wasi-common/tokio/Cargo.toml index b1a194bdff..13c5b23281 100644 --- a/crates/wasi-common/tokio/Cargo.toml +++ b/crates/wasi-common/tokio/Cargo.toml @@ -15,4 +15,14 @@ include = ["src/**/*", "LICENSE" ] wasi-common = { path = "../", version = "0.26.0" } wasi-cap-std-sync = { path = "../cap-std-sync", version = "0.26.0" } wiggle = { path = "../../wiggle", version = "0.26.0" } -tokio = { version = "1.5.0", features = [ "rt", "time" ] } +tokio = { version = "1.5.0", features = [ "rt", "fs", "time" ] } +cap-std = "0.13.7" +cap-fs-ext = "0.13.7" +cap-time-ext = "0.13.7" +fs-set-times = "0.3.1" +unsafe-io = "0.6.2" +system-interface = { version = "0.6.3", features = ["cap_std_impls"] } + +[dev-dependencies] +tempfile = "3.1.0" +tokio = { features = [ "macros" ] } diff --git a/crates/wasi-common/tokio/src/lib.rs b/crates/wasi-common/tokio/src/lib.rs index f01d832c8f..d7d4687428 100644 --- a/crates/wasi-common/tokio/src/lib.rs +++ b/crates/wasi-common/tokio/src/lib.rs @@ -1,14 +1,14 @@ +mod dir; +mod file; + use std::cell::RefCell; use std::path::Path; use std::rc::Rc; pub use wasi_cap_std_sync::{clocks_ctx, random_ctx, Dir}; -use wasi_common::{Table, WasiCtx}; +use wasi_common::{Error, Table, WasiCtx}; pub fn sched_ctx() -> Box { - use wasi_common::{ - sched::{Duration, Poll, WasiSched}, - Error, - }; + use wasi_common::sched::{Duration, Poll, WasiSched}; struct AsyncSched; #[wiggle::async_trait]