deps: Remove duplicate webc dependencies

These were introduced by an older version of targz-to-pirita depending
on an older wasmer-registry
This commit is contained in:
Christoph Herzog
2023-03-27 16:46:39 +02:00
committed by Michael-F-Bryan
parent 9910220c0a
commit 97136b111c
3 changed files with 48 additions and 181 deletions

View File

@@ -26,9 +26,9 @@ use wasmer::{
use wasmer_cache::Cache;
use wasmer_compiler::ArtifactBuild;
use wasmer_registry::Package;
use wasmer_wasix::runners::{wcgi::AbortHandle, MappedDirectory, Runner};
use webc::{metadata::Manifest, Container};
use webc_v4::DirOrFile;
use wasmer_wasix::runners::wcgi::AbortHandle;
use wasmer_wasix::runners::{MappedDirectory, Runner};
use webc::{metadata::Manifest, v1::DirOrFile, Container};
use crate::{
store::StoreOptions,
@@ -72,10 +72,10 @@ impl RunUnstable {
let (mut store, _) = self.store.get_store()?;
let cache = self.wasmer_home.module_cache();
let result = match target.load(cache, &store)? {
let mut cache = self.wasmer_home.module_cache();
let result = match target.load(&mut cache, &store)? {
ExecutableTarget::WebAssembly(wasm) => self.execute_wasm(&target, &wasm, &mut store),
ExecutableTarget::Webc(container, cache) => {
ExecutableTarget::Webc(container) => {
self.execute_webc(&target, container, cache, &mut store)
}
};
@@ -317,7 +317,7 @@ fn compile_directory_to_webc(dir: &Path) -> Result<Vec<u8>, Error> {
let mut files = BTreeMap::new();
load_files_from_disk(&mut files, dir, dir)?;
let wasmer_toml = webc_v4::DirOrFile::File("wasmer.toml".into());
let wasmer_toml = DirOrFile::File("wasmer.toml".into());
if let Some(toml_data) = files.remove(&wasmer_toml) {
// HACK(Michael-F-Bryan): The version of wapm-targz-to-pirita we are
// using doesn't know we renamed "wapm.toml" to "wasmer.toml", so we
@@ -343,11 +343,11 @@ fn load_files_from_disk(files: &mut FileMap, dir: &Path, base: &Path) -> Result<
if path.is_dir() {
load_files_from_disk(files, &path, base)?;
files.insert(webc_v4::DirOrFile::Dir(relative_path), Vec::new());
files.insert(DirOrFile::Dir(relative_path), Vec::new());
} else if path.is_file() {
let data = std::fs::read(&path)
.with_context(|| format!("Unable to read \"{}\"", path.display()))?;
files.insert(webc_v4::DirOrFile::File(relative_path), data);
files.insert(DirOrFile::File(relative_path), data);
}
}
Ok(())
@@ -462,12 +462,12 @@ impl TargetOnDisk {
}
}
fn load(&self, mut cache: ModuleCache, store: &Store) -> Result<ExecutableTarget, Error> {
fn load(&self, cache: &mut ModuleCache, store: &Store) -> Result<ExecutableTarget, Error> {
match self {
TargetOnDisk::Webc(webc) => {
// As an optimisation, try to use the mmapped version first.
if let Ok(container) = Container::from_disk(webc.clone()) {
return Ok(ExecutableTarget::Webc(container, cache));
return Ok(ExecutableTarget::Webc(container));
}
// Otherwise, fall back to the version that reads everything
@@ -476,7 +476,7 @@ impl TargetOnDisk {
.with_context(|| format!("Unable to read \"{}\"", webc.display()))?;
let container = Container::from_bytes(bytes)?;
Ok(ExecutableTarget::Webc(container, cache))
Ok(ExecutableTarget::Webc(container))
}
TargetOnDisk::Directory(dir) => {
// FIXME: Runners should be able to load directories directly
@@ -487,17 +487,13 @@ impl TargetOnDisk {
let container = Container::from_bytes(webc)
.context("Unable to parse the generated WEBC file")?;
Ok(ExecutableTarget::Webc(container, cache))
Ok(ExecutableTarget::Webc(container))
}
TargetOnDisk::WebAssemblyBinary(path) => {
let wasm = std::fs::read(path)
.with_context(|| format!("Unable to read \"{}\"", path.display()))?;
let module = compile_wasm_cached(
path.display().to_string(),
&wasm,
&mut cache,
store.engine(),
)?;
let module =
compile_wasm_cached(path.display().to_string(), &wasm, cache, store.engine())?;
Ok(ExecutableTarget::WebAssembly(module))
}
TargetOnDisk::Wat(path) => {
@@ -506,12 +502,8 @@ impl TargetOnDisk {
let wasm =
wasmer::wat2wasm(&wat).context("Unable to convert the WAT to WebAssembly")?;
let module = compile_wasm_cached(
path.display().to_string(),
&wasm,
&mut cache,
store.engine(),
)?;
let module =
compile_wasm_cached(path.display().to_string(), &wasm, cache, store.engine())?;
Ok(ExecutableTarget::WebAssembly(module))
}
TargetOnDisk::Artifact(artifact) => {
@@ -572,7 +564,7 @@ fn compile_wasm_cached(
#[derive(Debug, Clone)]
enum ExecutableTarget {
WebAssembly(Module),
Webc(Container, ModuleCache),
Webc(Container),
}
fn generate_coredump(err: &Error, source: &Path, coredump_path: &Path) -> Result<(), Error> {