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

[Bugfix] Convert metadata keys to screaming snake case instead of screaming kebab case in cargo_build_script_runner #2682

Merged
merged 1 commit into from
Jun 7, 2024
Merged

[Bugfix] Convert metadata keys to screaming snake case instead of screaming kebab case in cargo_build_script_runner #2682

merged 1 commit into from
Jun 7, 2024

Conversation

Pagten
Copy link
Contributor

@Pagten Pagten commented Jun 6, 2024

The cargo_build_script_runner currently converts the keys from cargo:KEY=VALUE metadata build script output lines into uppercase. This is not completely correct, however, because Cargo converts those keys to uppercase AND replaces dashes with underscores (effectively doing a conversion to SCREAMING_SNAKE_CASE).

To verify that Cargo is indeed doing the dash-to-underscore conversion, have a look at https://github.com/rust-lang/cargo/blob/10b7d384352f6d9a39f609de44476f815fc792a2/src/cargo/core/compiler/custom_build.rs#L46, which is the code responsible for building the DEP_{crate-name}_{metadata-key} env variables in Cargo. The code is

cmd.env(
    &format!("DEP_{}_{}", super::envify(&name), super::envify(key)),
    value,
);

where super::envify() is defined as

fn envify(s: &str) -> String {
    s.chars()
        .flat_map(|c| c.to_uppercase())
        .map(|c| if c == '-' { '_' } else { c })
        .collect()
}

This PR adds the dash-to-underscore conversion to cargo_build_script_runner.

@Pagten Pagten changed the title [Bugfix] Convert metadata keys to screaming snake case instead of screaming kebab case in cargo_build_script_runner [Bugfix] Convert metadata keys to screaming snake case instead of screaming kebab case in cargo_build_script_runner Jun 6, 2024
Copy link
Collaborator

@illicitonion illicitonion left a comment

Choose a reason for hiding this comment

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

Thanks for the fix, and the clear pointer to cargo's behaviour!

@illicitonion illicitonion added this pull request to the merge queue Jun 7, 2024
Merged via the queue into bazelbuild:main with commit ada2e52 Jun 7, 2024
3 checks passed
@Pagten Pagten deleted the convert-metadata-keys-to-screaming-snake-case branch June 7, 2024 19:08
rrbutani pushed a commit to bazel-contrib/toolchains_llvm that referenced this pull request Jun 10, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| rules_rust | bazel_dep | minor | `0.45.1` -> `0.46.0` |
| [rules_rust](https://github.com/bazelbuild/rules_rust) |
http_archive | minor | `0.45.1` -> `0.46.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_rust (rules_rust)</summary>

###
[`v0.46.0`](https://github.com/bazelbuild/rules_rust/releases/tag/0.46.0)

[Compare
Source](https://github.com/bazelbuild/rules_rust/compare/0.45.1...0.46.0)

##### 0.46.0

```python
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_rust",
    integrity = "sha256-F8U7+AC5MvMtPKGdLLnorVM84cDXKfDRgwd7/dq3rUY=",
    urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.46.0/rules_rust-v0.46.0.tar.gz"],
)
```

Additional documentation can be found at:
https://bazelbuild.github.io/rules_rust/#setup

##### What's Changed

- fix: default rustfmt version to supplied rust version by
[@&#8203;mattem](https://github.com/mattem) in
[bazelbuild/rules_rust#2660
- Use repo-mapping-aware runfiles API in rust-analyzer by
[@&#8203;dzbarsky](https://github.com/dzbarsky) in
[bazelbuild/rules_rust#2666
- Fix protobuf generated srcs to include all sources by
[@&#8203;matts1](https://github.com/matts1) in
[bazelbuild/rules_rust#2676
- Fix cargo_build_script executables. by
[@&#8203;matts1](https://github.com/matts1) in
[bazelbuild/rules_rust#2675
- crate_universe: Don't include crate name in build script path. by
[@&#8203;criemen](https://github.com/criemen) in
[bazelbuild/rules_rust#2663
- Ensure dynamic library dependencies end up in the runfiles directory
by [@&#8203;EdSchouten](https://github.com/EdSchouten) in
[bazelbuild/rules_rust#2671
- use bazel_ci_rules bazel_dep instead of http_archive by
[@&#8203;mmorel-35](https://github.com/mmorel-35) in
[bazelbuild/rules_rust#2678
- Ensure that running `bazel build` on a cargo_build_script target
actually runs the build script by
[@&#8203;matts1](https://github.com/matts1) in
[bazelbuild/rules_rust#2680
- Allow overriding crate universe packages to local packages by
[@&#8203;ograff](https://github.com/ograff) in
[bazelbuild/rules_rust#2674
- Depend on a copy of rustfmt for the target by
[@&#8203;EdSchouten](https://github.com/EdSchouten) in
[bazelbuild/rules_rust#2685
- \[Bugfix] Convert metadata keys to screaming snake case instead of
screaming kebab case in `cargo_build_script_runner` by
[@&#8203;Pagten](https://github.com/Pagten) in
[bazelbuild/rules_rust#2682
- Add support for override_target when using bzlmod by
[@&#8203;AmeliasCode](https://github.com/AmeliasCode) in
[bazelbuild/rules_rust#2683
- Release 0.46.0 by
[@&#8203;illicitonion](https://github.com/illicitonion) in
[bazelbuild/rules_rust#2686

##### New Contributors

- [@&#8203;mattem](https://github.com/mattem) made their first
contribution in
[bazelbuild/rules_rust#2660
- [@&#8203;EdSchouten](https://github.com/EdSchouten) made their first
contribution in
[bazelbuild/rules_rust#2671
- [@&#8203;mmorel-35](https://github.com/mmorel-35) made their first
contribution in
[bazelbuild/rules_rust#2678
- [@&#8203;ograff](https://github.com/ograff) made their first
contribution in
[bazelbuild/rules_rust#2674
- [@&#8203;Pagten](https://github.com/Pagten) made their first
contribution in
[bazelbuild/rules_rust#2682

**Full Changelog**:
bazelbuild/rules_rust@0.45.1...0.46.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/bazel-contrib/toolchains_llvm).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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.

2 participants