bump-stage0: pick highest common toml version, add a workaround

- We pick the higest common `toml` version used in the r-l/r workspace
  to avoid introducing Yet Another `toml` `0.x` version, which happens
  to be `0.8.23` as of the time of writing.
- We introduce a byte-buffer-to-string workaround for the `toml 0.8.*`
  series that do not have the `toml 0.9.*` series's `toml::from_slice`
  API yet. Not efficient, but this is not perf-critical so it's fine.
This commit is contained in:
Jieyou Xu 2025-09-06 16:29:26 +08:00
parent 397f933629
commit 5f372fe7d1
No known key found for this signature in database
GPG key ID: 045B995028EA6AFC
3 changed files with 7 additions and 3 deletions

View file

@ -336,7 +336,7 @@ dependencies = [
"curl",
"indexmap",
"serde",
"toml 0.7.8",
"toml 0.8.23",
]
[[package]]

View file

@ -11,4 +11,4 @@ build_helper = { path = "../../build_helper" }
curl = "0.4.38"
indexmap = { version = "2.0.0", features = ["serde"] }
serde = { version = "1.0.125", features = ["derive"] }
toml = "0.7"
toml = "0.8.23"

View file

@ -185,7 +185,11 @@ fn fetch_manifest(
format!("{}/dist/channel-rust-{}.toml", config.dist_server, channel)
};
Ok(toml::from_slice(&http_get(&url)?)?)
// FIXME: on newer `toml` (>= `0.9.*`), use `toml::from_slice`. For now, we use the most recent
// `toml` available in-tree which is `0.8.*`, so we have to do an additional dance here.
let response = http_get(&url)?;
let response = String::from_utf8(response)?;
Ok(toml::from_str(&response)?)
}
fn http_get(url: &str) -> Result<Vec<u8>, Error> {