Fix running semver-checks on `aws-config` (#3272)
## Motivation and Context Fixes https://github.com/smithy-lang/smithy-rs/issues/3265 ## Description To check semver, `semver checks` needs to compile two versions of a crate, i.e. baseline and current. Our CI failed to compile `aws-config` for a baseline version. The following diagram shows what was missing to cause compilation failure: ``` ┌───────────┐ │ smithy-rs │ └─────┬─────┘ │ │ │ ┌────────┐ └─────┤ target │ └───┬────┘ │ ┌───────────────┐ └────────┤ semver_checks │ └───────┬───────┘ │ │ │ ┌──────────┐ └───────┤ git-base │ └────┬─────┘ │ │ ┌──────────────┐ ├────────┤ <rev number> │ │ └──────┬───────┘ │ │ │ │ │ │ ┌───────┐ │ ├───────┤ aws │ │ │ └───┬───┘ │ │ │ │ │ │ ┌──────────────┐ │ │ ├───────┤ rust-runtime │ │ │ │ └──────┬───────┘ │ │ │ │ │ │ │ │ ┌────────────┐ │ │ │ └───────┤ aws-config │ ◄*************** │ │ │ └────────────┘ * │ │ │ * * │ │ │ * * │ │ │ *****depends*on**** * │ │ │ ▼ * │ │ │ * │ │ │ ┌─────┐ * │ │ └───────┤ sdk │ (with no "build" directory) * │ │ └─────┘ * │ │ * │ │ * │ │ ┌────────────────────┐ depends on │ └──────┤ tmp-codegen-diff │ * │ └─────────┬──────────┘ * │ │ * │ │ ┌─────────┐ * │ └───────┤ aws-sdk │ * │ └────┬────┘ * │ │ ┌─────┐ * │ └─────┤ sdk │ * │ └─────┘ * │ * │ * │ ┌───────────────────────────────────────┐ * └───────────┤ local-aws_config-0_0_0_smithy_rs_head │***************************** └───────────────────────────────────────┘ ``` `local-aws_config-0_0_0_smithy_rs_head` under the `git-base` directory is a special crate created by `semver-checks` for a baseline version of `aws-config` and its `Cargo.toml` depends on `target/semver_checks/git-base/<rev number>/aws/rust-runtime/aws-config`. However, that `aws-config` in turn depends upon crates in `target/semver_checks/git-base/<rev number>/aws/sdk/build/` (as shown [here](https://github.com/smithy-lang/smithy-rs/blob/main/aws/rust-runtime/aws-config/Cargo.toml#L23-L33)), which does not exist in a baseline branch. When `semver-checks.py` [creates a baseline branch](https://github.com/smithy-lang/smithy-rs/blob/3d0cb5c3b179d5ed1d14531882657b481c4469f0/tools/ci-scripts/codegen-diff/semver-checks.py#L31) to prepare for running `cargo semver-checks`, it [moves aws/sdk/build to tmp-codegen-diff](https://github.com/smithy-lang/smithy-rs/blob/3d0cb5c3b179d5ed1d14531882657b481c4469f0/tools/ci-scripts/codegen-diff/diff_lib.py#L59), leaving nothing behind in `aws/sdk/build/`. The fix, therefore, is to `cp -r aws/sdk/build/aws-sdk` instead of `mv aws/sdk/build/aws-sdk` when preparing a baseline branch. The issue is specific to `aws-config`, probably because that's the only runtime crate that depends on those in `aws/sdk/build`. ## Testing Verified a clean run for `cargo semver-checks` in [an investigation branch](https://github.com/smithy-lang/smithy-rs/actions/runs/7035082815/job/19144676499#step:4:1101). ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._
Loading
Please register or sign in to comment