mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-09 14:18:20 +00:00
Merge branch 'master' into feat_sharedmemory
This commit is contained in:
2029
CHANGELOG.md
2029
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
17
Makefile
17
Makefile
@@ -40,6 +40,7 @@ SHELL=/usr/bin/env bash
|
|||||||
|
|
||||||
IS_DARWIN := 0
|
IS_DARWIN := 0
|
||||||
IS_LINUX := 0
|
IS_LINUX := 0
|
||||||
|
IS_FREEBSD := 0
|
||||||
IS_WINDOWS := 0
|
IS_WINDOWS := 0
|
||||||
IS_AMD64 := 0
|
IS_AMD64 := 0
|
||||||
IS_AARCH64 := 0
|
IS_AARCH64 := 0
|
||||||
@@ -57,6 +58,8 @@ else
|
|||||||
IS_DARWIN := 1
|
IS_DARWIN := 1
|
||||||
else ifeq ($(uname), Linux)
|
else ifeq ($(uname), Linux)
|
||||||
IS_LINUX := 1
|
IS_LINUX := 1
|
||||||
|
else ifeq ($(uname), FreeBSD)
|
||||||
|
IS_FREEBSD := 1
|
||||||
else
|
else
|
||||||
# We use spaces instead of tabs to indent `$(error)`
|
# We use spaces instead of tabs to indent `$(error)`
|
||||||
# otherwise it's considered as a command outside a
|
# otherwise it's considered as a command outside a
|
||||||
@@ -67,7 +70,7 @@ else
|
|||||||
# Architecture
|
# Architecture
|
||||||
uname := $(shell uname -m)
|
uname := $(shell uname -m)
|
||||||
|
|
||||||
ifeq ($(uname), x86_64)
|
ifneq (, $(filter $(uname), x86_64 amd64))
|
||||||
IS_AMD64 := 1
|
IS_AMD64 := 1
|
||||||
else ifneq (, $(filter $(uname), aarch64 arm64))
|
else ifneq (, $(filter $(uname), aarch64 arm64))
|
||||||
IS_AARCH64 := 1
|
IS_AARCH64 := 1
|
||||||
@@ -166,7 +169,7 @@ ifneq ($(ENABLE_SINGLEPASS), 0)
|
|||||||
ifeq ($(ENABLE_SINGLEPASS), 1)
|
ifeq ($(ENABLE_SINGLEPASS), 1)
|
||||||
compilers += singlepass
|
compilers += singlepass
|
||||||
# … otherwise, we try to check whether Singlepass works on this host.
|
# … otherwise, we try to check whether Singlepass works on this host.
|
||||||
else ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX) $(IS_WINDOWS)))
|
else ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX) $(IS_FREEBSD) $(IS_WINDOWS)))
|
||||||
ifeq ($(IS_AMD64), 1)
|
ifeq ($(IS_AMD64), 1)
|
||||||
compilers += singlepass
|
compilers += singlepass
|
||||||
endif
|
endif
|
||||||
@@ -213,7 +216,7 @@ endif
|
|||||||
##
|
##
|
||||||
|
|
||||||
ifeq ($(ENABLE_LLVM), 1)
|
ifeq ($(ENABLE_LLVM), 1)
|
||||||
ifneq (, $(filter 1, $(IS_WINDOWS) $(IS_DARWIN) $(IS_LINUX)))
|
ifneq (, $(filter 1, $(IS_WINDOWS) $(IS_DARWIN) $(IS_LINUX) $(IS_FREEBSD)))
|
||||||
ifeq ($(IS_AMD64), 1)
|
ifeq ($(IS_AMD64), 1)
|
||||||
compilers_engines += llvm-universal
|
compilers_engines += llvm-universal
|
||||||
else ifeq ($(IS_AARCH64), 1)
|
else ifeq ($(IS_AARCH64), 1)
|
||||||
@@ -227,7 +230,7 @@ endif
|
|||||||
##
|
##
|
||||||
|
|
||||||
ifeq ($(ENABLE_SINGLEPASS), 1)
|
ifeq ($(ENABLE_SINGLEPASS), 1)
|
||||||
ifneq (, $(filter 1, $(IS_WINDOWS) $(IS_DARWIN) $(IS_LINUX)))
|
ifneq (, $(filter 1, $(IS_WINDOWS) $(IS_DARWIN) $(IS_LINUX) $(IS_FREEBSD)))
|
||||||
ifeq ($(IS_AMD64), 1)
|
ifeq ($(IS_AMD64), 1)
|
||||||
compilers_engines += singlepass-universal
|
compilers_engines += singlepass-universal
|
||||||
endif
|
endif
|
||||||
@@ -272,7 +275,7 @@ capi_compilers_engines := $(filter-out $(capi_compilers_engines_exclude),$(compi
|
|||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
|
|
||||||
ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX)))
|
ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX) $(IS_FREEBSD)))
|
||||||
bold := $(shell tput bold 2>/dev/null || echo -n '')
|
bold := $(shell tput bold 2>/dev/null || echo -n '')
|
||||||
green := $(shell tput setaf 2 2>/dev/null || echo -n '')
|
green := $(shell tput setaf 2 2>/dev/null || echo -n '')
|
||||||
yellow := $(shell tput setaf 3 2>/dev/null || echo -n '')
|
yellow := $(shell tput setaf 3 2>/dev/null || echo -n '')
|
||||||
@@ -333,6 +336,8 @@ SEDI ?=
|
|||||||
|
|
||||||
ifeq ($(IS_DARWIN), 1)
|
ifeq ($(IS_DARWIN), 1)
|
||||||
SEDI := "-i ''"
|
SEDI := "-i ''"
|
||||||
|
else ifeq ($(IS_FREEBSD), 1)
|
||||||
|
SEDI := "-i ''"
|
||||||
else ifeq ($(IS_LINUX), 1)
|
else ifeq ($(IS_LINUX), 1)
|
||||||
SEDI := "-i"
|
SEDI := "-i"
|
||||||
endif
|
endif
|
||||||
@@ -559,7 +564,7 @@ generate-wasi-tests:
|
|||||||
|
|
||||||
package-wapm:
|
package-wapm:
|
||||||
mkdir -p "package/bin"
|
mkdir -p "package/bin"
|
||||||
ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX)))
|
ifneq (, $(filter 1, $(IS_DARWIN) $(IS_LINUX) $(IS_FREEBSD)))
|
||||||
if [ -d "wapm-cli" ]; then \
|
if [ -d "wapm-cli" ]; then \
|
||||||
cp wapm-cli/$(TARGET_DIR)/wapm package/bin/ ;\
|
cp wapm-cli/$(TARGET_DIR)/wapm package/bin/ ;\
|
||||||
echo -e "#!/bin/bash\nwapm execute \"\$$@\"" > package/bin/wax ;\
|
echo -e "#!/bin/bash\nwapm execute \"\$$@\"" > package/bin/wax ;\
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ curl https://get.wasmer.io -sSfL | sh
|
|||||||
* <a href="https://crates.io/crates/cargo-binstall/">Cargo binstall</a>
|
* <a href="https://crates.io/crates/cargo-binstall/">Cargo binstall</a>
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cargo binstall wasmer
|
cargo binstall wasmer-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
* <a href="https://crates.io/crates/wasmer-cli/">Cargo</a>
|
* <a href="https://crates.io/crates/wasmer-cli/">Cargo</a>
|
||||||
|
|||||||
@@ -166,31 +166,26 @@ http = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata.binstall]
|
|
||||||
pkg-fmt = "tgz"
|
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.aarch64-apple-darwin]
|
[package.metadata.binstall.overrides.aarch64-apple-darwin]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-darwin-arm64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-darwin-arm64.{ archive-format }"
|
||||||
bin-dir = "wasmer-darwin-arm64/bin/{ bin }"
|
bin-dir = "bin/{ bin }"
|
||||||
|
|
||||||
#https://github.com/wasmerio/wasmer/releases/download/3.0.0-beta/wasmer-darwin-arm64.tar.gz
|
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.x86_64-apple-darwin]
|
[package.metadata.binstall.overrides.x86_64-apple-darwin]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-darwin-amd64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-darwin-amd64.{ archive-format }"
|
||||||
bin-dir = "wasmer-darwin-amd64/bin/{ bin }"
|
bin-dir = "bin/{ bin }"
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu]
|
[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-linux-aarch64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-linux-aarch64.{ archive-format }"
|
||||||
bin-dir = "wasmer-linux-aarch64/bin/{ bin }"
|
bin-dir = "bin/{ bin }"
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu]
|
[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-linux-amd64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-linux-amd64.{ archive-format }"
|
||||||
bin-dir = "wasmer-linux-amd64/bin/{ bin }"
|
bin-dir = "bin/{ bin }"
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.x86_64-unknown-linux-musl]
|
[package.metadata.binstall.overrides.x86_64-unknown-linux-musl]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-linux-musl-amd64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-linux-musl-amd64.{ archive-format }"
|
||||||
bin-dir = "wasmer-linux-musl-amd64/bin/{ bin }"
|
bin-dir = "bin/{ bin }"
|
||||||
|
|
||||||
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
|
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
|
||||||
pkg-url = "{ repo }/releases/download/{ version }/wasmer-windows-amd64.{ archive-format }"
|
pkg-url = "{ repo }/releases/download/v{ version }/wasmer-windows-amd64.{ archive-format }"
|
||||||
bin-dir = "wasmer-windows-amd64/bin/{ bin }.exe"
|
bin-dir = "bin/{ bin }.exe"
|
||||||
|
|||||||
@@ -51,8 +51,14 @@ impl Login {
|
|||||||
/// execute [List]
|
/// execute [List]
|
||||||
pub fn execute(&self) -> Result<(), anyhow::Error> {
|
pub fn execute(&self) -> Result<(), anyhow::Error> {
|
||||||
let token = self.get_token_or_ask_user()?;
|
let token = self.get_token_or_ask_user()?;
|
||||||
wasmer_registry::login::login_and_save_token(&self.registry, &token)
|
match wasmer_registry::login::login_and_save_token(&self.registry, &token)? {
|
||||||
.map_err(|e| anyhow::anyhow!("{e}"))
|
Some(s) => println!("Login for WAPM user {:?} saved", s),
|
||||||
|
None => println!(
|
||||||
|
"Error: no user found on registry {:?} with token {:?}. Token saved regardless.",
|
||||||
|
self.registry, token
|
||||||
|
),
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,14 @@ pub fn login_and_save_token(
|
|||||||
#[cfg(test)] test_name: &str,
|
#[cfg(test)] test_name: &str,
|
||||||
registry: &str,
|
registry: &str,
|
||||||
token: &str,
|
token: &str,
|
||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<Option<String>, anyhow::Error> {
|
||||||
let registry = format_graphql(registry);
|
let registry = format_graphql(registry);
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
let mut config = PartialWapmConfig::from_file(test_name).map_err(|e| anyhow::anyhow!("{e}"))?;
|
let mut config = PartialWapmConfig::from_file(test_name)
|
||||||
|
.map_err(|e| anyhow::anyhow!("config from file: {e}"))?;
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
let mut config = PartialWapmConfig::from_file().map_err(|e| anyhow::anyhow!("{e}"))?;
|
let mut config =
|
||||||
|
PartialWapmConfig::from_file().map_err(|e| anyhow::anyhow!("config from file: {e}"))?;
|
||||||
config.registry.set_current_registry(®istry);
|
config.registry.set_current_registry(®istry);
|
||||||
config.registry.set_login_token_for_registry(
|
config.registry.set_login_token_for_registry(
|
||||||
&config.registry.get_current_registry(),
|
&config.registry.get_current_registry(),
|
||||||
@@ -21,16 +23,11 @@ pub fn login_and_save_token(
|
|||||||
UpdateRegistry::Update,
|
UpdateRegistry::Update,
|
||||||
);
|
);
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
let path =
|
let path = PartialWapmConfig::get_file_location(test_name)
|
||||||
PartialWapmConfig::get_file_location(test_name).map_err(|e| anyhow::anyhow!("{e}"))?;
|
.map_err(|e| anyhow::anyhow!("get file location: {e}"))?;
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
let path = PartialWapmConfig::get_file_location().map_err(|e| anyhow::anyhow!("{e}"))?;
|
let path = PartialWapmConfig::get_file_location()
|
||||||
|
.map_err(|e| anyhow::anyhow!("get file location: {e}"))?;
|
||||||
config.save(&path)?;
|
config.save(&path)?;
|
||||||
let username = crate::utils::get_username_registry_token(®istry, token);
|
crate::utils::get_username_registry_token(®istry, token)
|
||||||
if let Some(s) = username.ok().and_then(|o| o) {
|
|
||||||
println!("Login for WAPM user {:?} saved", s);
|
|
||||||
} else {
|
|
||||||
println!("Login for WAPM user saved");
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ cfg_if::cfg_if! {
|
|||||||
))] {
|
))] {
|
||||||
pc = context.uc_mcontext.gregs[libc::REG_EIP as usize] as usize;
|
pc = context.uc_mcontext.gregs[libc::REG_EIP as usize] as usize;
|
||||||
sp = context.uc_mcontext.gregs[libc::REG_ESP as usize] as usize;
|
sp = context.uc_mcontext.gregs[libc::REG_ESP as usize] as usize;
|
||||||
} else if #[cfg(all(target_os = "freebsd", target_arch = "x86"))] {
|
} else if #[cfg(all(target_os = "freebsd", any(target_arch = "x86", target_arch = "x86_64")))] {
|
||||||
pc = context.uc_mcontext.mc_rip as usize;
|
pc = context.uc_mcontext.mc_rip as usize;
|
||||||
sp = context.uc_mcontext.mc_rsp as usize;
|
sp = context.uc_mcontext.mc_rsp as usize;
|
||||||
} else if #[cfg(all(target_vendor = "apple", target_arch = "x86_64"))] {
|
} else if #[cfg(all(target_vendor = "apple", target_arch = "x86_64"))] {
|
||||||
|
|||||||
@@ -12,6 +12,12 @@ varies based on the WASI version). A program compiled for the
|
|||||||
filesystem manipulation, memory management, time, string, environment
|
filesystem manipulation, memory management, time, string, environment
|
||||||
variables, program startup etc.
|
variables, program startup etc.
|
||||||
|
|
||||||
|
Wasmer WASI is created with the aim to be fully sandboxed.
|
||||||
|
We are able to achieve that thanks to our Virtual Filesystem implementation (`wasmer-vfs`)
|
||||||
|
and by only allowing secure systemcalls back to the host.
|
||||||
|
|
||||||
|
> Note: If you encounter any sandboxing issue please open an issue in the wasmer repo https://github.com/wasmerio/wasmer.
|
||||||
|
|
||||||
This crate provides the necessary API to create the imports to use
|
This crate provides the necessary API to create the imports to use
|
||||||
WASI easily from the Wasmer runtime, through our `ImportObject` API.
|
WASI easily from the Wasmer runtime, through our `ImportObject` API.
|
||||||
|
|
||||||
|
|||||||
@@ -18,18 +18,31 @@ fn login_works() -> anyhow::Result<()> {
|
|||||||
.arg(wapm_dev_token)
|
.arg(wapm_dev_token)
|
||||||
.output()?;
|
.output()?;
|
||||||
|
|
||||||
|
let stdout = std::str::from_utf8(&output.stdout)
|
||||||
|
.expect("stdout is not utf8! need to handle arbitrary bytes");
|
||||||
|
|
||||||
|
let stderr = std::str::from_utf8(&output.stderr)
|
||||||
|
.expect("stderr is not utf8! need to handle arbitrary bytes");
|
||||||
|
|
||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
bail!(
|
bail!(
|
||||||
"wasmer login failed with: stdout: {}\n\nstderr: {}",
|
"wasmer login failed with: stdout: {}\n\nstderr: {}",
|
||||||
std::str::from_utf8(&output.stdout)
|
stdout,
|
||||||
.expect("stdout is not utf8! need to handle arbitrary bytes"),
|
stderr
|
||||||
std::str::from_utf8(&output.stderr)
|
|
||||||
.expect("stderr is not utf8! need to handle arbitrary bytes")
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let stdout_output = std::str::from_utf8(&output.stdout).unwrap();
|
let stdout_output = std::str::from_utf8(&output.stdout).unwrap();
|
||||||
assert_eq!(stdout_output, "Login for WAPM user \"ciuser\" saved\n");
|
let expected = "Login for WAPM user \"ciuser\" saved\n";
|
||||||
|
if stdout_output != expected {
|
||||||
|
println!("expected:");
|
||||||
|
println!("{expected}");
|
||||||
|
println!("got:");
|
||||||
|
println!("{stdout}");
|
||||||
|
println!("-----");
|
||||||
|
println!("{stderr}");
|
||||||
|
panic!("stdout incorrect");
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user