Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ END_UNRELEASED_TEMPLATE
([#3339](https://github.com/bazel-contrib/rules_python/issues/3339)).
* (uv) {obj}`//python/uv:lock.bzl%lock` now works with a local platform
runtime.
* (pypi) `linux_riscv64` is added to the platforms list in `_pip_repository_impl`,
which fixes [a build issue for tensorflow on riscv64](https://github.com/bazel-contrib/rules_python/discussions/2729).
* (toolchains) WORKSPACE builds now correctly register musl and freethreaded
variants. Setting {obj}`--py_linux_libc=musl` and `--py_freethreaded=yes` now
activate them, respectively.
Expand Down Expand Up @@ -1980,4 +1982,4 @@ Breaking changes:
* (pip) Create all_data_requirements alias
* Expose Python C headers through the toolchain.

[0.24.0]: https://github.com/bazel-contrib/rules_python/releases/tag/0.24.0
[0.24.0]: https://github.com/bazel-contrib/rules_python/releases/tag/0.24.0
1 change: 1 addition & 0 deletions python/private/pypi/pip_repository.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def _pip_repository_impl(rctx):
"linux_aarch64",
"linux_arm",
"linux_ppc",
"linux_riscv64",
"linux_s390x",
"linux_x86_64",
"osx_aarch64",
Expand Down
3 changes: 3 additions & 0 deletions python/private/pypi/whl_installer/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class Arch(Enum):
ppc64le = 5
s390x = 6
arm = 7
riscv64 = 8
amd64 = x86_64
arm64 = aarch64
i386 = x86_32
Expand Down Expand Up @@ -269,6 +270,8 @@ def platform_machine(self) -> str:
return "ppc"
elif self.arch == Arch.ppc64le:
return "ppc64le"
elif self.arch == Arch.riscv64:
return "riscv64"
elif self.arch == Arch.s390x:
return "s390x"
else:
Expand Down
1 change: 1 addition & 0 deletions python/private/pypi/whl_target_platforms.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ _CPU_ALIASES = {
"ppc": "ppc",
"ppc64": "ppc",
"ppc64le": "ppc64le",
"riscv64": "riscv64",
"s390x": "s390x",
"arm": "arm",
"armv6l": "arm",
Expand Down
6 changes: 3 additions & 3 deletions tests/pypi/whl_installer/platform_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ def test_can_get_specific_from_string(self):

def test_can_get_all_for_py_version(self):
cp39 = Platform.all(minor_version=9, micro_version=0)
self.assertEqual(21, len(cp39), f"Got {cp39}")
self.assertEqual(24, len(cp39), f"Got {cp39}")
self.assertEqual(cp39, Platform.from_string("cp39.0_*"))

def test_can_get_all_for_os(self):
linuxes = Platform.all(OS.linux, minor_version=9)
self.assertEqual(7, len(linuxes))
self.assertEqual(8, len(linuxes))
self.assertEqual(linuxes, Platform.from_string("cp39_linux_*"))

def test_can_get_all_for_os_for_host_python(self):
linuxes = Platform.all(OS.linux)
self.assertEqual(7, len(linuxes))
self.assertEqual(8, len(linuxes))
self.assertEqual(linuxes, Platform.from_string("linux_*"))

def test_platform_sort(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ def _test_simple(env):
"musllinux_1_1_ppc64le": [
struct(os = "linux", cpu = "ppc64le", abi = None, target_platform = "linux_ppc64le", version = (1, 1)),
],
"musllinux_1_2_riscv64": [
struct(os = "linux", cpu = "riscv64", abi = None, target_platform = "linux_riscv64", version = (1, 2)),
],
"win_amd64": [
struct(os = "windows", cpu = "x86_64", abi = None, target_platform = "windows_x86_64", version = (0, 0)),
],
Expand Down Expand Up @@ -66,6 +69,9 @@ def _test_with_abi(env):
"musllinux_1_1_ppc64le": [
struct(os = "linux", cpu = "ppc64le", abi = "cp311", target_platform = "cp311_linux_ppc64le", version = (1, 1)),
],
"musllinux_1_2_riscv64": [
struct(os = "linux", cpu = "riscv64", abi = "cp311", target_platform = "cp311_linux_riscv64", version = (1, 2)),
],
"win_amd64": [
struct(os = "windows", cpu = "x86_64", abi = "cp311", target_platform = "cp311_windows_x86_64", version = (0, 0)),
],
Expand Down Expand Up @@ -96,13 +102,15 @@ def _can_parse_existing_tags(env):
"manylinux2014_i686": 1,
"manylinux2014_ppc64": 1,
"manylinux2014_ppc64le": 1,
"manylinux2014_riscv64": 1,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the first manylinux for RISC-V 64 should be manylinux_2_39?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's true but perhaps it is not important in tests since the test is only testing if the components could be parsed successfully.
e.g there are also fake ones like musllinux_11_12

"manylinux2014_s390x": 1,
"manylinux2014_x86_64": 1,
"manylinux_11_12_aarch64": 1,
"manylinux_11_12_armv7l": 1,
"manylinux_11_12_i686": 1,
"manylinux_11_12_ppc64": 1,
"manylinux_11_12_ppc64le": 1,
"manylinux_11_12_riscv64": 1,
"manylinux_11_12_s390x": 1,
"manylinux_11_12_x86_64": 1,
"manylinux_1_2_aarch64": 1,
Expand All @@ -111,6 +119,7 @@ def _can_parse_existing_tags(env):
"musllinux_11_12_armv7l": 1,
"musllinux_11_12_i686": 1,
"musllinux_11_12_ppc64le": 1,
"musllinux_11_12_riscv64": 1,
"musllinux_11_12_s390x": 1,
"musllinux_11_12_x86_64": 1,
"win32": 1,
Expand Down