Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow building for wasm32-wasi target using Bazel. #50

Merged
merged 1 commit into from
Nov 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Force Bazel to use --target=wasm32-unknown-unknown.
build --platforms=@io_bazel_rules_rust//rust/platform:wasm
# Force Bazel to use --target=wasm32-wasi
build --platforms=@io_bazel_rules_rust//rust/platform:wasi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we ready to change this by default? I've only ever used Rust and Wasm with the "wasm32-unknown-unknown" target and I'm not sure how well WASI works.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proxy-Wasm C++ SDK (Emscripten) already emits WASI calls, and we have the basic ones implemented in Envoy already (e.g. wasi_args_get, wasi_environ_get, wasi_fd_write, wasi_proc_exit, and more recently wasi_clock_get_time and wasi_random_get).

We're not losing any functionality by switching to it, and only gaining access to features exposed by WASI-capable crates (see: #51).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the change to default make sense for you?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense to me -- when I built locally I also got an import of some super long mangled name, but perhaps thats' changed. As long as WASI builds work with a recent Envoy then I think this change is fine.

2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.4.1
3.7.0
7 changes: 5 additions & 2 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,11 @@ jobs:
~/.cargo/registry
key: ${{ hashFiles('WORKSPACE', '.bazelrc', '.bazelversion', 'bazel/cargo/Cargo.lock') }}

- name: Build
run: bazelisk build //...
- name: Build (wasm32-unknown-unknown)
run: bazelisk --bazelrc=/dev/null build --platforms=@io_bazel_rules_rust//rust/platform:wasm //...

- name: Build (wasm32-wasi)
run: bazelisk --bazelrc=/dev/null build --platforms=@io_bazel_rules_rust//rust/platform:wasi //...

- name: Format (buildifier)
run: |
Expand Down
11 changes: 11 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ panic = "abort"
workspace_path = "//bazel/cargo"
genmode = "Remote"

[package.metadata.raze.crates.libc.'0.2.80']
additional_flags = [
"--cfg=libc_priv_mod_use",
"--cfg=libc_union",
"--cfg=libc_const_size_of",
"--cfg=libc_align",
"--cfg=libc_core_cvoid",
"--cfg=libc_packedN",
"--cfg=libc_cfg_target_vendor",
]

[package.metadata.raze.crates.log.'0.4.11']
additional_flags = ["--cfg=atomic_cas"]

Expand Down
7 changes: 7 additions & 0 deletions bazel/cargo/remote/BUILD.libc-0.2.80.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ rust_library(
edition = "2015",
rustc_flags = [
"--cap-lints=allow",
"--cfg=libc_priv_mod_use",
"--cfg=libc_union",
"--cfg=libc_const_size_of",
"--cfg=libc_align",
"--cfg=libc_core_cvoid",
"--cfg=libc_packedN",
"--cfg=libc_cfg_target_vendor",
],
tags = [
"cargo-raze",
Expand Down