Fix headless-minimal properly

This commit is contained in:
Felix Schütt
2023-01-17 21:02:44 +01:00
parent 1ca0de826d
commit 0678e90cbd
8 changed files with 47 additions and 46 deletions

View File

@@ -162,7 +162,7 @@ llvm = [
debug = ["fern", "wasmer-wasi/logging"] debug = ["fern", "wasmer-wasi/logging"]
disable-all-logging = ["wasmer-wasi/disable-all-logging"] disable-all-logging = ["wasmer-wasi/disable-all-logging"]
headless = [] headless = []
headless-minimal = ["headless", "disable-all-logging", "wasi", "webc", "static-artifact-create"] headless-minimal = ["headless", "disable-all-logging", "wasi"]
# Optional # Optional
enable-serde = [ enable-serde = [

View File

@@ -6,14 +6,13 @@ use crate::commands::Binfmt;
use crate::commands::Compile; use crate::commands::Compile;
#[cfg(any(feature = "static-artifact-create", feature = "wasmer-artifact-create"))] #[cfg(any(feature = "static-artifact-create", feature = "wasmer-artifact-create"))]
use crate::commands::CreateExe; use crate::commands::CreateExe;
#[cfg(feature = "static-artifact-create")]
use crate::commands::CreateObj;
#[cfg(feature = "wast")] #[cfg(feature = "wast")]
use crate::commands::Wast; use crate::commands::Wast;
use crate::commands::{ use crate::commands::{
Add, Cache, Config, GenCHeader, Init, Inspect, List, Login, Publish, Run, SelfUpdate, Validate, Add, Cache, Config, Init, Inspect, List, Login, Publish, Run, SelfUpdate, Validate, Whoami,
Whoami,
}; };
#[cfg(feature = "static-artifact-create")]
use crate::commands::{CreateObj, GenCHeader};
use crate::error::PrettyError; use crate::error::PrettyError;
use clap::{CommandFactory, ErrorKind, Parser}; use clap::{CommandFactory, ErrorKind, Parser};
@@ -130,6 +129,7 @@ enum WasmerCLIOptions {
CreateObj(CreateObj), CreateObj(CreateObj),
/// Generate the C static_defs.h header file for the input .wasm module /// Generate the C static_defs.h header file for the input .wasm module
#[cfg(feature = "static-artifact-create")]
GenCHeader(GenCHeader), GenCHeader(GenCHeader),
/// Get various configuration information needed /// Get various configuration information needed
@@ -181,6 +181,7 @@ impl WasmerCLIOptions {
Self::List(list) => list.execute(), Self::List(list) => list.execute(),
Self::Login(login) => login.execute(), Self::Login(login) => login.execute(),
Self::Publish(publish) => publish.execute(), Self::Publish(publish) => publish.execute(),
#[cfg(feature = "static-artifact-create")]
Self::GenCHeader(gen_heder) => gen_heder.execute(), Self::GenCHeader(gen_heder) => gen_heder.execute(),
#[cfg(feature = "wast")] #[cfg(feature = "wast")]
Self::Wast(wast) => wast.execute(), Self::Wast(wast) => wast.execute(),

View File

@@ -10,6 +10,7 @@ mod config;
mod create_exe; mod create_exe;
#[cfg(feature = "static-artifact-create")] #[cfg(feature = "static-artifact-create")]
mod create_obj; mod create_obj;
#[cfg(feature = "static-artifact-create")]
mod gen_c_header; mod gen_c_header;
mod init; mod init;
mod inspect; mod inspect;
@@ -29,19 +30,18 @@ pub use binfmt::*;
pub use compile::*; pub use compile::*;
#[cfg(any(feature = "static-artifact-create", feature = "wasmer-artifact-create"))] #[cfg(any(feature = "static-artifact-create", feature = "wasmer-artifact-create"))]
pub use create_exe::*; pub use create_exe::*;
#[cfg(feature = "static-artifact-create")]
pub use create_obj::*;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wast")] #[cfg(feature = "wast")]
pub use wast::*; pub use wast::*;
pub use { pub use {
add::*, cache::*, config::*, gen_c_header::*, init::*, inspect::*, list::*, login::*, add::*, cache::*, config::*, init::*, inspect::*, list::*, login::*, publish::*, run::*,
publish::*, run::*, self_update::*, validate::*, whoami::*, self_update::*, validate::*, whoami::*,
}; };
#[cfg(feature = "static-artifact-create")]
pub use {create_obj::*, gen_c_header::*};
/// The kind of object format to emit. /// The kind of object format to emit.
#[derive(Debug, Copy, Clone, PartialEq, Eq, clap::Parser, Serialize, Deserialize)] #[derive(Debug, Copy, Clone, PartialEq, Eq, clap::Parser, Serialize, Deserialize)]
#[cfg(any(feature = "static-artifact-create", feature = "wasmer-artifact-create"))]
pub enum ObjectFormat { pub enum ObjectFormat {
/// Serialize the entire module into an object file. /// Serialize the entire module into an object file.
Serialized, Serialized,

View File

@@ -1,6 +1,7 @@
//! Create a standalone native executable for a given Wasm file. //! Create a standalone native executable for a given Wasm file.
use super::ObjectFormat; use super::ObjectFormat;
use crate::common::normalize_path;
use crate::store::CompilerOptions; use crate::store::CompilerOptions;
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use clap::Parser; use clap::Parser;
@@ -1319,10 +1320,6 @@ fn link_exe_from_dir(
Ok(()) Ok(())
} }
pub(crate) fn normalize_path(s: &str) -> String {
s.strip_prefix(r"\\?\").unwrap_or(s).to_string()
}
/// Link compiled objects using the system linker /// Link compiled objects using the system linker
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
fn link_objects_system_linker( fn link_objects_system_linker(

View File

@@ -70,7 +70,7 @@ pub struct CreateObj {
impl CreateObj { impl CreateObj {
/// Runs logic for the `create-obj` subcommand /// Runs logic for the `create-obj` subcommand
pub fn execute(&self) -> Result<()> { pub fn execute(&self) -> Result<()> {
let path = crate::commands::create_exe::normalize_path(&format!("{}", self.path.display())); let path = crate::common::normalize_path(&format!("{}", self.path.display()));
let target_triple = self.target_triple.clone().unwrap_or_else(Triple::host); let target_triple = self.target_triple.clone().unwrap_or_else(Triple::host);
let starting_cd = env::current_dir()?; let starting_cd = env::current_dir()?;
let input_path = starting_cd.join(&path); let input_path = starting_cd.join(&path);
@@ -95,8 +95,9 @@ impl CreateObj {
println!("Target: {}", target.triple()); println!("Target: {}", target.triple());
println!("Format: {:?}", object_format); println!("Format: {:?}", object_format);
let atoms = let atoms = if let Ok(pirita) =
if let Ok(pirita) = webc::WebCMmap::parse(input_path.clone(), &webc::ParseOptions::default()) { webc::WebCMmap::parse(input_path.clone(), &webc::ParseOptions::default())
{
crate::commands::create_exe::compile_pirita_into_directory( crate::commands::create_exe::compile_pirita_into_directory(
&pirita, &pirita,
&output_directory_path, &output_directory_path,

View File

@@ -7,8 +7,6 @@ use wasmer_types::compilation::symbols::ModuleMetadataSymbolRegistry;
use wasmer_types::{CpuFeature, MetadataHeader, Triple}; use wasmer_types::{CpuFeature, MetadataHeader, Triple};
use webc::WebC; use webc::WebC;
use super::normalize_path;
#[derive(Debug, Parser)] #[derive(Debug, Parser)]
/// The options for the `wasmer gen-c-header` subcommand /// The options for the `wasmer gen-c-header` subcommand
pub struct GenCHeader { pub struct GenCHeader {
@@ -50,7 +48,7 @@ pub struct GenCHeader {
impl GenCHeader { impl GenCHeader {
/// Runs logic for the `gen-c-header` subcommand /// Runs logic for the `gen-c-header` subcommand
pub fn execute(&self) -> Result<(), anyhow::Error> { pub fn execute(&self) -> Result<(), anyhow::Error> {
let path = crate::commands::normalize_path(&format!("{}", self.path.display())); let path = crate::common::normalize_path(&format!("{}", self.path.display()));
let mut file = std::fs::read(&path) let mut file = std::fs::read(&path)
.map_err(|e| anyhow::anyhow!("{e}")) .map_err(|e| anyhow::anyhow!("{e}"))
.with_context(|| anyhow::anyhow!("{path}"))?; .with_context(|| anyhow::anyhow!("{path}"))?;
@@ -126,7 +124,7 @@ impl GenCHeader {
metadata_length, metadata_length,
); );
let output = normalize_path(&self.output.display().to_string()); let output = crate::common::normalize_path(&self.output.display().to_string());
std::fs::write(&output, &header_file_src) std::fs::write(&output, &header_file_src)
.map_err(|e| anyhow::anyhow!("{e}")) .map_err(|e| anyhow::anyhow!("{e}"))

View File

@@ -428,8 +428,8 @@ fn construct_manifest(
.join(&format!("{package_name}.wasm")); .join(&format!("{package_name}.wasm"));
let canonicalized_outpath = outpath.canonicalize().unwrap_or(outpath); let canonicalized_outpath = outpath.canonicalize().unwrap_or(outpath);
let outpath_str = let outpath_str =
crate::commands::normalize_path(&canonicalized_outpath.display().to_string()); crate::common::normalize_path(&canonicalized_outpath.display().to_string());
let manifest_canonicalized = crate::commands::normalize_path( let manifest_canonicalized = crate::common::normalize_path(
&manifest_path &manifest_path
.parent() .parent()
.and_then(|p| p.canonicalize().ok()) .and_then(|p| p.canonicalize().ok())

View File

@@ -51,3 +51,7 @@ pub fn get_cache_dir() -> PathBuf {
} }
} }
} }
pub(crate) fn normalize_path(s: &str) -> String {
s.strip_prefix(r"\\?\").unwrap_or(s).to_string()
}