wavefnd / wavefnd/Wave

Preserve native compiler failures in the Windows ARM64 PowerShell smoke step

Open
#505 0 comments 0 reactions 0 assignees View on GitHub
bug build ci cross-platform good first issue
Dominant language
Rust
Stars
53
Forks
16
Avg merge
4h 22m
Merged PRs (30d)
46

Description

## Problem and evidence

The native Windows ARM64 smoke step invokes `wavec build` and immediately reads `test1.o`, without checking the native command exit code. In #502 the visible failure is consequently a `ReadAllBytes` exception for a missing object, and the compiler exit status is absent from the log.

[Failing native ARM64 job](https://github.com/wavefnd/Wave/actions/runs/34120708675/job/101737847925)

Relevant code at `e204bbebbbede0086fbb670d43a65b9cf38f0231`: `.github/workflows/rust.yml:933-950`, particularly the `& $compiler` invocations and object read. `$ErrorActionPreference = "Stop"` does not provide the explicit native-command status handling this step needs.

The log proves the object is absent; it does **not** record enough information to assign a compiler exit code or root cause to this particular command. Native access violations are already tracked in #493 and should stay there.

## Scope

Capture/check the native exit code immediately after each compiler invocation in this smoke step, including version/default-target commands, and stop with the command/phase and exit status before attempting artifact inspection. Keep compiler stdout/stderr visible. When compilation succeeds, still validate artifact existence and ARM64 COFF/PE machine types.

## Acceptance

- [ ] A fake native command that exits nonzero with no output causes an actionable failure before `ReadAllBytes`.
- [ ] A zero-exit command that produces no object reports a distinct missing-artifact failure.
- [ ] Successful compiler and ARM64 artifact checks retain the current behavior.
- [ ] Validation uses PowerShell; a tiny fake native process is sufficient for the failure paths and requires no LLVM build.

This is a good first issue for CI error reporting. It must not be presented as fixing the underlying compiler crash in #493.

Contributor guide

Open the contributing guide

Research direction

Read .github/workflows/rust.yml:933-950, especially each $compiler invocation and the test1.o inspection. Start by running the PowerShell smoke-step logic with a tiny fake native process covering nonzero and zero-exit/no-object cases. Done means failures identify the command or phase and exit status before ReadAllBytes, while successful ARM64 COFF/PE checks retain their current behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, powershell
Domain
ci-cd, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.