Skip to content

SCRATCH PR: wasm ci test, don't review#1390

Closed
daniel-noland wants to merge 12 commits intomainfrom
wasm
Closed

SCRATCH PR: wasm ci test, don't review#1390
daniel-noland wants to merge 12 commits intomainfrom
wasm

Conversation

@daniel-noland
Copy link
Collaborator

No description provided.

Remove all kani proof annotations and cfg(kani) guards from net crate tests.
Remove the [lints.rust] unexpected_cfgs kani check-cfg from net/Cargo.toml.

Kani is not actively used and these annotations add noise.
Slim down bolero feature flags from [alloc, arbitrary, std] to [std] in both
dependencies and dev-dependencies. Remove duplicate etherparse dev-dependency
(already present in [dependencies]).

This drops the transitive 'arbitrary' crate dependency.
- Add #[must_use] to pure accessor methods
- Add #[allow(clippy::cast_possible_truncation)] and #[allow(clippy::too_many_lines)] where needed
- Replace .map(...).unwrap_or(0) with .map_or(0, ...)
- Collapse nested Some(A) | Some(B) match arms into Some(A | B)
- Replace Default::default() with ArrayVec::default() in contract generators
- Convert match on bool to if/else in bolero generators
- Fix stray semicolons and narrow wildcard imports in contract module
- Add Errors doc sections to fallible public methods
- Remove 4 crate-wide #![allow(...)] from config/src/lib.rs, replacing with
  targeted #[allow(clippy::struct_excessive_bools)] on the 5 structs that need it
- Fix redundant_closure_for_method_calls: use method references instead of
  closures (e.g. .map(LegalValue::take), .for_each(GwGroup::sort_members))
- Fix doc_markdown lints: backtick-wrap type names in doc comments
- Add Errors doc sections to ~20 fallible public methods
- Convert // comments to /// doc comments on VpcExpose NAT methods
- Remove unused import (crate::converters::k8s::config::peering)
- Move atomic-instant-full under cfg(any(x86_64, aarch64)) target dep
- Move linux-raw-sys under cfg(unix) target dep
- Gate flows and packet modules with #![cfg(unix)]
- Replace linux_raw_sys::if_ether::ETH_MAX_MTU with literal 65535 in mtu.rs
- Add #![cfg_attr(not(unix), allow(unused))] to net/src/lib.rs
Add a 'sysfs' feature to the hardware crate (default-enabled) that gates the
sysfs dependency and the nic module. This allows the hardware crate to be used
in wasm32 builds where sysfs/procfs is unavailable.

Update downstream consumers (args, init) to explicitly enable the sysfs feature.
Add a 'client' feature (default-enabled) to k8s-intf that gates the full K8s
client, watcher, and status-reporting functionality (futures, linkme, rustls,
tokio, tracectl, and kube client/runtime/rustls-tls features). When disabled,
only the generated CRD types are available.

This allows the validator crate to depend on k8s-intf with default-features=false
for wasm32-wasip1 builds that only need CRD type definitions.

Update downstream consumers:
- k8s-less, mgmt: explicitly enable the client feature
- validator: use default-features = false
Move linkme and tracectl to [target.'cfg(unix)'.dependencies] in config/Cargo.toml.
Add #[cfg(unix)] / #[cfg(not(unix))] conditional imports and fallback definitions
for LevelFilter and DEFAULT_DEFAULT_LOGLEVEL on non-unix platforms.

Split TracingConfig::validate() into platform-specific implementations:
- Unix: real validation via tracectl
- Non-unix: no-op (returns Ok)

Gate trace_target! macro and ConfigError::Tracing variant with cfg(unix).

Also: clean up derive_builder features, add sysfs to hardware dev-dep,
simplify bolero dev-dep features.
Workspace-level changes to support cross-platform builds:
- Set default-features = false for hardware and k8s-intf workspace deps
- Move rt-multi-thread from workspace tokio to routing/Cargo.toml
- Move codec from workspace tokio-util to routing/Cargo.toml
- Fix trailing whitespace on netgauze-bgp-pkt line

Update Cargo.lock to reflect dependency changes.
- Add wasm32-wasip1 platform entry in nix/platforms.nix (arch table + info)
- Accept kernel parameter in platforms.nix for wasip1 support
- Add wasm32-wasip1 to rust toolchain targets in nix/overlays/llvm.nix
- Add empty march.wasm32 in nix/profiles.nix
Major restructuring to support wasm32-wasip1 alongside native builds:

- Add kernel parameter for platform selection
- Merge dev-pkgs and frr-pkgs into unified pkgs (with conditional pkgsCross)
- Conditional sysroot: full native deps for linux, minimal for wasm
- Replace dev-pkgs references with pkgs.pkgsBuildHost
- Conditional RUSTFLAGS: linker flags for native, empty for wasm
- Conditional postInstall: strip/objcopy for native, wasm-opt for wasm
- Add workspace-builder-wasm and workspace-wasm derivations
- Fix crane import (remove unnecessary pkgs arg)
- Fix src filter (use baseNameOf and lib.cleanSource)
- Add oras to devshell for OCI artifact pushing
- Add binary symlinks to dataplane.tar
- Remove fakeNss from frr-host container
- Remove dev-pkgs and frr-pkgs from exports, add workspace-wasm
Justfile:
- Add libc and kernel variables derived from platform
- Pass libc and kernel to nix build invocations
- Default jobs to 8
- Add validator target to build-container and push-container (via oras)
- Update push recipe to include validator with wasm32-wasip1 platform

CI (dev.yml):
- Add validator to build matrix
- Reorder nix-install before checkout for caching
- Remove Go setup (no longer needed)
- Add nix-shell caching step
- Add oras login alongside docker login
- Add platform logic for wasm vs native builds
- Fix script quoting (double to single quotes)
@daniel-noland
Copy link
Collaborator Author

closed in favor of #1380

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant