mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-07 05:08:19 +00:00
Fix headless-minimal properly
This commit is contained in:
@@ -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 = [
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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}"))
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user