Correctly reference os-specific labels from central alias repo (#889)
* Correctly reference os-specific labels from central alias repo
The current aliases hardcode the bazel host os, which does not work when cross compiling.
* Update toolchains_repo.bzl
* fix: remove spaces from key in dict
Co-authored-by: Thulio Ferraz Assis <3149049+f0rmiga@users.noreply.github.com>
diff --git a/python/private/toolchains_repo.bzl b/python/private/toolchains_repo.bzl
index 93cf31a..4b832d9 100644
--- a/python/private/toolchains_repo.bzl
+++ b/python/private/toolchains_repo.bzl
@@ -96,22 +96,22 @@
build_contents = """\
# Generated by python/private/toolchains_repo.bzl
package(default_visibility = ["//visibility:public"])
+load("@rules_python//python:versions.bzl", "PLATFORMS", "gen_python_config_settings")
+gen_python_config_settings()
exports_files(["defs.bzl"])
-alias(name = "files", actual = "@{py_repository}_{host_platform}//:files")
-alias(name = "includes", actual = "@{py_repository}_{host_platform}//:includes")
-alias(name = "libpython", actual = "@{py_repository}_{host_platform}//:libpython")
-alias(name = "py3_runtime", actual = "@{py_repository}_{host_platform}//:py3_runtime")
-alias(name = "python_headers", actual = "@{py_repository}_{host_platform}//:python_headers")
-alias(name = "python_runtimes", actual = "@{py_repository}_{host_platform}//:python_runtimes")
-alias(name = "python3", actual = "@{py_repository}_{host_platform}//:{python3_binary_path}")
+alias(name = "files", actual = select({{":" + item: "@{py_repository}_" + item + "//:files" for item in PLATFORMS.keys()}}))
+alias(name = "includes", actual = select({{":" + item: "@{py_repository}_" + item + "//:includes" for item in PLATFORMS.keys()}}))
+alias(name = "libpython", actual = select({{":" + item: "@{py_repository}_" + item + "//:libpython" for item in PLATFORMS.keys()}}))
+alias(name = "py3_runtime", actual = select({{":" + item: "@{py_repository}_" + item + "//:py3_runtime" for item in PLATFORMS.keys()}}))
+alias(name = "python_headers", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_headers" for item in PLATFORMS.keys()}}))
+alias(name = "python_runtimes", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_runtimes" for item in PLATFORMS.keys()}}))
+alias(name = "python3", actual = select({{":" + item: "@{py_repository}_" + item + "//:" + ("python.exe" if "windows" in item else "bin/python3") for item in PLATFORMS.keys()}}))
""".format(
py_repository = rctx.attr.user_repository_name,
- host_platform = host_platform,
- python3_binary_path = python3_binary_path,
)
if not is_windows:
build_contents += """\
-alias(name = "pip", actual = "@{py_repository}_{host_platform}//:bin/pip")
+alias(name = "pip", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_runtimes" for item in PLATFORMS.keys() if "windows" not in item}}))
""".format(
py_repository = rctx.attr.user_repository_name,
host_platform = host_platform,