Skip to content

Commit e3d2dfd

Browse files
authored
Fix Rust dep versions (#3369)
# Description of Changes It turns out that cargo automatically uses the latest semver-compatible versions of dependencies, which is not what we expected. tl;dr specifying `1.5.0` actually means `>=1.5.0 <2.0.0`, but we actually intend `1.5.*`. This PR updates our `upgrade-version` tool, and re-runs it to fix the dep versions. # API and ABI breaking changes None. # Expected complexity level and risk 1 # Testing - [x] I ran `cargo bump-versions 1.5.0 --rust-and-cli` to regenerate the other committed files. --------- Co-authored-by: Zeke Foppa <[email protected]>
1 parent 2271dbd commit e3d2dfd

File tree

3 files changed

+43
-36
lines changed

3 files changed

+43
-36
lines changed

Cargo.toml

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -98,38 +98,38 @@ edition = "2021"
9898
rust-version = "1.88.0"
9999

100100
[workspace.dependencies]
101-
spacetimedb = { path = "crates/bindings", version = "1.5.0" }
102-
spacetimedb-auth = { path = "crates/auth", version = "1.5.0" }
103-
spacetimedb-bindings-macro = { path = "crates/bindings-macro", version = "1.5.0" }
104-
spacetimedb-bindings-sys = { path = "crates/bindings-sys", version = "1.5.0" }
105-
spacetimedb-cli = { path = "crates/cli", version = "1.5.0" }
106-
spacetimedb-client-api = { path = "crates/client-api", version = "1.5.0" }
107-
spacetimedb-client-api-messages = { path = "crates/client-api-messages", version = "1.5.0" }
108-
spacetimedb-codegen = { path = "crates/codegen", version = "1.5.0" }
109-
spacetimedb-commitlog = { path = "crates/commitlog", version = "1.5.0" }
110-
spacetimedb-core = { path = "crates/core", version = "1.5.0" }
111-
spacetimedb-data-structures = { path = "crates/data-structures", version = "1.5.0" }
112-
spacetimedb-datastore = { path = "crates/datastore", version = "1.5.0" }
113-
spacetimedb-durability = { path = "crates/durability", version = "1.5.0" }
114-
spacetimedb-execution = { path = "crates/execution", version = "1.5.0" }
115-
spacetimedb-expr = { path = "crates/expr", version = "1.5.0" }
116-
spacetimedb-lib = { path = "crates/lib", default-features = false, version = "1.5.0" }
117-
spacetimedb-memory-usage = { path = "crates/memory-usage", version = "1.5.0", default-features = false }
118-
spacetimedb-metrics = { path = "crates/metrics", version = "1.5.0" }
119-
spacetimedb-paths = { path = "crates/paths", version = "1.5.0" }
120-
spacetimedb-pg = { path = "crates/pg", version = "1.5.0" }
121-
spacetimedb-physical-plan = { path = "crates/physical-plan", version = "1.5.0" }
122-
spacetimedb-primitives = { path = "crates/primitives", version = "1.5.0" }
123-
spacetimedb-query = { path = "crates/query", version = "1.5.0" }
124-
spacetimedb-sats = { path = "crates/sats", version = "1.5.0" }
125-
spacetimedb-schema = { path = "crates/schema", version = "1.5.0" }
126-
spacetimedb-standalone = { path = "crates/standalone", version = "1.5.0" }
127-
spacetimedb-sql-parser = { path = "crates/sql-parser", version = "1.5.0" }
128-
spacetimedb-table = { path = "crates/table", version = "1.5.0" }
129-
spacetimedb-vm = { path = "crates/vm", version = "1.5.0" }
130-
spacetimedb-fs-utils = { path = "crates/fs-utils", version = "1.5.0" }
131-
spacetimedb-snapshot = { path = "crates/snapshot", version = "1.5.0" }
132-
spacetimedb-subscription = { path = "crates/subscription", version = "1.5.0" }
101+
spacetimedb = { path = "crates/bindings", version = "=1.5.0" }
102+
spacetimedb-auth = { path = "crates/auth", version = "=1.5.0" }
103+
spacetimedb-bindings-macro = { path = "crates/bindings-macro", version = "=1.5.0" }
104+
spacetimedb-bindings-sys = { path = "crates/bindings-sys", version = "=1.5.0" }
105+
spacetimedb-cli = { path = "crates/cli", version = "=1.5.0" }
106+
spacetimedb-client-api = { path = "crates/client-api", version = "=1.5.0" }
107+
spacetimedb-client-api-messages = { path = "crates/client-api-messages", version = "=1.5.0" }
108+
spacetimedb-codegen = { path = "crates/codegen", version = "=1.5.0" }
109+
spacetimedb-commitlog = { path = "crates/commitlog", version = "=1.5.0" }
110+
spacetimedb-core = { path = "crates/core", version = "=1.5.0" }
111+
spacetimedb-data-structures = { path = "crates/data-structures", version = "=1.5.0" }
112+
spacetimedb-datastore = { path = "crates/datastore", version = "=1.5.0" }
113+
spacetimedb-durability = { path = "crates/durability", version = "=1.5.0" }
114+
spacetimedb-execution = { path = "crates/execution", version = "=1.5.0" }
115+
spacetimedb-expr = { path = "crates/expr", version = "=1.5.0" }
116+
spacetimedb-lib = { path = "crates/lib", default-features = false, version = "=1.5.0" }
117+
spacetimedb-memory-usage = { path = "crates/memory-usage", version = "=1.5.0", default-features = false }
118+
spacetimedb-metrics = { path = "crates/metrics", version = "=1.5.0" }
119+
spacetimedb-paths = { path = "crates/paths", version = "=1.5.0" }
120+
spacetimedb-pg = { path = "crates/pg", version = "=1.5.0" }
121+
spacetimedb-physical-plan = { path = "crates/physical-plan", version = "=1.5.0" }
122+
spacetimedb-primitives = { path = "crates/primitives", version = "=1.5.0" }
123+
spacetimedb-query = { path = "crates/query", version = "=1.5.0" }
124+
spacetimedb-sats = { path = "crates/sats", version = "=1.5.0" }
125+
spacetimedb-schema = { path = "crates/schema", version = "=1.5.0" }
126+
spacetimedb-standalone = { path = "crates/standalone", version = "=1.5.0" }
127+
spacetimedb-sql-parser = { path = "crates/sql-parser", version = "=1.5.0" }
128+
spacetimedb-table = { path = "crates/table", version = "=1.5.0" }
129+
spacetimedb-vm = { path = "crates/vm", version = "=1.5.0" }
130+
spacetimedb-fs-utils = { path = "crates/fs-utils", version = "=1.5.0" }
131+
spacetimedb-snapshot = { path = "crates/snapshot", version = "=1.5.0" }
132+
spacetimedb-subscription = { path = "crates/subscription", version = "=1.5.0" }
133133

134134
# Prevent `ahash` from pulling in `getrandom` by disabling default features.
135135
# Modules use `getrandom02` and we need to prevent an incompatible version

crates/cli/src/subcommands/project/rust/Cargo._toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ edition = "2021"
99
crate-type = ["cdylib"]
1010

1111
[dependencies]
12-
spacetimedb = "1.5"
12+
spacetimedb = "1.5.*"
1313
log = "0.4"

tools/upgrade-version/src/main.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ fn main() -> anyhow::Result<()> {
104104
}
105105

106106
if matches.get_flag("rust-and-cli") {
107+
// Use `=` for dependency versions, to avoid issues where Cargo automatically rolls forward to later minor versions.
108+
// See https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#default-requirements.
109+
let dep_version = format!("={version}");
110+
107111
// root Cargo.toml
108112
edit_toml("Cargo.toml", |doc| {
109113
doc["workspace"]["package"]["version"] = toml_edit::value(version);
@@ -113,16 +117,19 @@ fn main() -> anyhow::Result<()> {
113117
.iter_mut()
114118
{
115119
if key.get().starts_with("spacetime") {
116-
dep["version"] = toml_edit::value(version)
120+
dep["version"] = toml_edit::value(dep_version.clone())
117121
}
118122
}
119123
})?;
120124

121125
edit_toml("crates/cli/src/subcommands/project/rust/Cargo._toml", |doc| {
122-
// Only set major.minor for the spacetimedb dependency, drop the patch component.
126+
// Only set major.minor.* for the spacetimedb dependency.
123127
// See https://github.com/clockworklabs/SpacetimeDB/issues/2724.
128+
//
129+
// Note: This is meaningfully different than setting just major.minor.
130+
// See https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#default-requirements.
124131
let v = Version::parse(version).expect("Invalid semver provided to upgrade-version");
125-
let major_minor = format!("{}.{}", v.major, v.minor);
132+
let major_minor = format!("{}.{}.*", v.major, v.minor);
126133
doc["dependencies"]["spacetimedb"] = toml_edit::value(major_minor);
127134
})?;
128135

0 commit comments

Comments
 (0)