indygreg / indygreg/PyOxidizer

Declaring minimum rust version in metadata

Open
#364 3 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
6.2k
Forks
256
PR merge metrics
No merged PRs in 30d

Description

Following on from https://github.com/indygreg/PyOxidizer/issues/24 a bit ...

I tried to build `main` and ran into an error building dev-dep `indoc` 1.0.3 which requires rust 1.45. While the Cargo.toml only requires 1.0 (which builds on 1.35 and probably much lower), the pin is for indoc 1.0.3

Reading the docs, https://pyoxidizer.readthedocs.io/en/latest/getting_started.html#installing-rust, rust 1.45 does seem to be required, and https://github.com/indygreg/PyOxidizer/commit/263d44ed36a844b1a7e23e57353461e16453bead explains why. I've upgraded to 1.47 and I'm building again.

As rust 1.45 is now required by pyozidizer, would it make sense to update Cargo.toml to bump minimum dependency version numbers where latter versions in `.lock` also take advantage of rust 1.45 features? i.e. bumping `indoc`, but likely to be other similar cases that could be found with a little scripting.

It would be nice if the minimum is included in the pyoxidizer build system. https://rust-lang.github.io/rfcs/2495-min-rust-version.html suggests it is possible to inform the build machinery what the minimum version required is. It seems quite new and not used in the dependencies I looked at, so maybe it isnt ready for use. Googling suggests other(nastier) ways of halting builds early if the wrong compiler is found, e.g. using build.rs with crate `rustc_version` or `version_check`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with Cargo.toml and the lockfile, comparing the declared Rust requirement with locked dependencies such as indoc 1.0.3. Read the linked Rust minimum-version RFC and the cited PyOxidizer commit to understand the intended build-system support. Done means the project consistently declares or enforces its actual Rust 1.45 minimum and aligns dependency metadata with it.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.