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,