From 237c291203302e99754fa5e4982f71fed5a8a268 Mon Sep 17 00:00:00 2001 From: messense Date: Tue, 10 Mar 2026 07:42:22 +0800 Subject: [PATCH] fix: skip legacy manylinux aliases not in PyPI allow-list `manylinux_2_17` has `manylinux2014` as a legacy alias, but PyPI static allow-list never included `manylinux2014_riscv64`. This caused wheels built with `--manylinux 2_17` for riscv64 to fail PyPI validation. Only add legacy alias tags when the full tag (alias + arch) exists in PyPI `ALLOWED_PLATFORMS` list. --- src/target/platform_tag.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/target/platform_tag.rs b/src/target/platform_tag.rs index e5e744b9a..b2f0e23f7 100644 --- a/src/target/platform_tag.rs +++ b/src/target/platform_tag.rs @@ -9,6 +9,7 @@ use crate::PyProjectToml; use crate::auditwheel::PlatformTag; +use crate::target::legacy_py::ALLOWED_PLATFORMS; use crate::target::{Arch, Os, Target}; use anyhow::{Context, Result, anyhow, bail}; use once_cell::sync::Lazy; @@ -64,7 +65,12 @@ pub fn get_platform_tag( for platform_tag in platform_tags { tags.push(format!("{platform_tag}_{arch}")); for alias in platform_tag.aliases() { - tags.push(format!("{alias}_{arch}")); + let alias_tag = format!("{alias}_{arch}"); + // Only add legacy aliases if they're in PyPI's static allow-list, + // e.g. manylinux2014 was never defined for riscv64 + if ALLOWED_PLATFORMS.contains(&alias_tag.as_str()) { + tags.push(alias_tag); + } } } tags.join(".")