Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PHD: allow patched Crucible dependencies (#778)
`phd-runner` uses the dependency on Crucible specified in the workspace's Cargo.toml to determine which downstairs artifact to download from Buildomat. This only works when the Crucible dependency is a Git dep on the `oxidecomputer/crucible` GitHub repo. In some cases, developers may patch Crucible to a local checkout or a different repository, such as for testing changes that haven't been merged to `oxidecomputer/crucible`. Unfortunately, the phd-runner build script fails in this case, which makes running any PHD tests impossible. This is unfortunate. PHD tests _can_ still be run when the Crucible dependency is patched, either by disabling the Crucible-based tests, or by manually providing a Crucible downstairs binary path. However, because the build script fails in this case, it's impossible to build `phd-runner`, which sucks. Instead, we should allow the build to succeed and just disable the `--crucible-downstairs-commit auto` CLI option when the dependency isn't pointed at the Crucible GitHub repo. This commit does that. Now, we just log a warning and set the env var to a sentinel value that means we couldn't determine the SHA for auto mode. The `phd-runner` binary will then exit with an error if `--crucible-downstairs-commit auto` is selected when compiled without a known Git SHA. To test this, I patched Crucible with a local checkout: ```toml [patch."https://github.com/oxidecomputer/crucible"] crucible = { path = "../crucible/upstairs" } crucible-client-types = { path = "../crucible/crucible-client-types" } ``` Running `cargo build -p phd-runner` now succeeds: ```console eliza@theseus ~/Code/oxide/propolis $ cargo build -p phd-runner Locking 4 packages to latest compatible versions Adding crucible v0.0.1 (/home/eliza/Code/oxide/crucible/upstairs) Adding crucible-client-types v0.1.0 (/home/eliza/Code/oxide/crucible/crucible-client-types) Adding crucible-common v0.0.1 (/home/eliza/Code/oxide/crucible/common) Adding crucible-protocol v0.0.0 (/home/eliza/Code/oxide/crucible/protocol) Compiling propolis-client v0.1.0 (/home/eliza/Code/oxide/propolis/lib/propolis-client) Compiling phd-runner v0.1.0 (/home/eliza/Code/oxide/propolis/phd-tests/runner) warning: [email protected]: Crucible dependency is patched with a local checkout, so the `--crucible-downstairs-commit auto` flag will be disabled in this PHD build Compiling phd-framework v0.1.0 (/home/eliza/Code/oxide/propolis/phd-tests/framework) Compiling phd-testcase v0.1.0 (/home/eliza/Code/oxide/propolis/phd-tests/testcase) Compiling phd-tests v0.1.0 (/home/eliza/Code/oxide/propolis/phd-tests/tests) Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.63s ``` Fixes #770
- Loading branch information