Skip to content

ci: pass --locked to cargo install --path cargo-pgrx#2292

Open
philippemnoel wants to merge 1 commit into
pgcentralfoundation:developfrom
philippemnoel:ci-cargo-install-locked
Open

ci: pass --locked to cargo install --path cargo-pgrx#2292
philippemnoel wants to merge 1 commit into
pgcentralfoundation:developfrom
philippemnoel:ci-cargo-install-locked

Conversation

@philippemnoel
Copy link
Copy Markdown
Contributor

@philippemnoel philippemnoel commented May 15, 2026

Summary

cargo install --path does not honor Cargo.lock unless --locked is given, so every CI run silently re-resolves all transitive dependencies fresh from crates.io. That just started biting us on the `verify package can build` job — the fresh resolution pulled in `rustix 0.37.28`, whose `#[rustc_attrs]` attributes the current nightly rejects:

```
error: attributes starting with `rustc` are reserved for use by the `rustc` compiler
--> rustix-0.37.28/src/backend/linux_raw/io/errno.rs:28:25
|
28 | #[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0xf001))]
```

The lockfile on `develop` already pins `rustix 1.1.2`, which builds fine — CI just wasn't honoring it.

This PR adds `--locked` to every `cargo install --path cargo-pgrx` invocation across the three workflow files:

  • `.github/workflows/tests.yml` (5 spots)
  • `.github/workflows/runas.yml` (1 spot)
  • `.github/workflows/package-test.yaml` (1 spot)

No code changes, no dep changes — just makes CI install pgrx with the same resolution as a normal `cargo build`. The `cargo install cargo-deny --locked` line was already correct and is left alone.

Test plan

  • `grep -rn "cargo install" .github/workflows/` confirms every `--path cargo-pgrx` invocation now passes `--locked`
  • CI on this PR builds green (will verify once it runs)

`cargo install --path` ignores `Cargo.lock` unless `--locked` is given,
so every CI run re-resolved transitive deps fresh from crates.io. This
recently started failing on the `verify package can build` job: the
fresh resolution pulled in `rustix 0.37.28`, which uses `#[rustc_attrs]`
attributes that the current nightly compiler rejects with:

    error: attributes starting with `rustc` are reserved for use by the
           `rustc` compiler
      --> rustix-0.37.28/src/backend/linux_raw/io/errno.rs:28:25

`Cargo.lock` on `develop` already pins `rustix 1.1.2`, which builds
fine; the CI just wasn't honoring it.

Add `--locked` to every `cargo install --path cargo-pgrx` invocation
across the three workflow files (5 in tests.yml, 1 in runas.yml, 1 in
package-test.yaml) so CI uses the same resolution as `cargo build` and
becomes reproducible.
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.

1 participant