Skip to content

Commit 2f078ce

Browse files
committed
rust: conditionalize triple release on Python version
I want to get the release upload to the point where we have no false positives for missing artifacts.
1 parent 678268e commit 2f078ce

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ octocrab = { version = "0", features = ["rustls"] }
1616
once_cell = "1"
1717
reqwest = {version = "0", features = ["rustls"] }
1818
scroll = "0"
19+
semver = "1"
1920
serde_json = "1"
2021
serde = { version = "1", features = ["derive"] }
2122
tar = "0"

src/github.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,13 @@ pub async fn command_upload_release_distributions(args: &ArgMatches) -> Result<(
205205
let mut wanted_filenames = BTreeSet::new();
206206
for version in python_versions {
207207
for (triple, release) in RELEASE_TRIPLES.iter() {
208+
if let Some(req) = &release.python_version_requirement {
209+
let python_version = semver::Version::parse(version)?;
210+
if !req.matches(&python_version) {
211+
continue;
212+
}
213+
}
214+
208215
for suffix in &release.suffixes {
209216
wanted_filenames.insert(format!(
210217
"cpython-{}-{}-{}-{}.tar.zst",

src/release.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use {
66
anyhow::Result,
77
once_cell::sync::Lazy,
8+
semver::VersionReq,
89
std::{
910
collections::BTreeMap,
1011
io::{BufRead, Read, Write},
@@ -18,6 +19,8 @@ pub struct TripleRelease {
1819
pub suffixes: Vec<&'static str>,
1920
/// Build suffix to use for the `install_only` artifact.
2021
pub install_only_suffix: &'static str,
22+
/// Minimum Python version this triple is released for.
23+
pub python_version_requirement: Option<VersionReq>,
2124
}
2225

2326
pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::new(|| {
@@ -30,13 +33,15 @@ pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::
3033
TripleRelease {
3134
suffixes: macos_suffixes.clone(),
3235
install_only_suffix: "pgo+lto",
36+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
3337
},
3438
);
3539
h.insert(
3640
"x86_64-apple-darwin",
3741
TripleRelease {
3842
suffixes: macos_suffixes,
3943
install_only_suffix: "pgo+lto",
44+
python_version_requirement: None,
4045
},
4146
);
4247

@@ -47,13 +52,15 @@ pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::
4752
TripleRelease {
4853
suffixes: windows_suffixes.clone(),
4954
install_only_suffix: "shared-pgo",
55+
python_version_requirement: None,
5056
},
5157
);
5258
h.insert(
5359
"x86_64-pc-windows-msvc",
5460
TripleRelease {
5561
suffixes: windows_suffixes,
5662
install_only_suffix: "shared-pgo",
63+
python_version_requirement: None,
5764
},
5865
);
5966

@@ -66,6 +73,7 @@ pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::
6673
TripleRelease {
6774
suffixes: linux_suffixes_nopgo.clone(),
6875
install_only_suffix: "lto",
76+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
6977
},
7078
);
7179

@@ -74,6 +82,7 @@ pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::
7482
TripleRelease {
7583
suffixes: linux_suffixes_pgo.clone(),
7684
install_only_suffix: "pgo+lto",
85+
python_version_requirement: None,
7786
},
7887
);
7988

@@ -82,55 +91,63 @@ pub static RELEASE_TRIPLES: Lazy<BTreeMap<&'static str, TripleRelease>> = Lazy::
8291
TripleRelease {
8392
suffixes: linux_suffixes_pgo.clone(),
8493
install_only_suffix: "pgo+lto",
94+
python_version_requirement: None,
8595
},
8696
);
8797
h.insert(
8898
"x86_64_v2-unknown-linux-gnu",
8999
TripleRelease {
90100
suffixes: linux_suffixes_pgo.clone(),
91101
install_only_suffix: "pgo+lto",
102+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
92103
},
93104
);
94105
h.insert(
95106
"x86_64_v3-unknown-linux-gnu",
96107
TripleRelease {
97108
suffixes: linux_suffixes_pgo.clone(),
98109
install_only_suffix: "pgo+lto",
110+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
99111
},
100112
);
101113
h.insert(
102114
"x86_64_v4-unknown-linux-gnu",
103115
TripleRelease {
104116
suffixes: linux_suffixes_nopgo.clone(),
105117
install_only_suffix: "lto",
118+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
106119
},
107120
);
108121
h.insert(
109122
"x86_64-unknown-linux-musl",
110123
TripleRelease {
111124
suffixes: linux_suffixes_nopgo.clone(),
112125
install_only_suffix: "lto",
126+
python_version_requirement: None,
113127
},
114128
);
115129
h.insert(
116130
"x86_64_v2-unknown-linux-musl",
117131
TripleRelease {
118132
suffixes: linux_suffixes_nopgo.clone(),
119133
install_only_suffix: "lto",
134+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
120135
},
121136
);
122137
h.insert(
123138
"x86_64_v3-unknown-linux-musl",
124139
TripleRelease {
125140
suffixes: linux_suffixes_nopgo.clone(),
126141
install_only_suffix: "lto",
142+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
127143
},
128144
);
129145
h.insert(
130146
"x86_64_v4-unknown-linux-musl",
131147
TripleRelease {
132148
suffixes: linux_suffixes_nopgo.clone(),
133149
install_only_suffix: "lto",
150+
python_version_requirement: Some(VersionReq::parse(">=3.9").unwrap()),
134151
},
135152
);
136153

0 commit comments

Comments
 (0)