From ed59285a86acd439c1d401c988a378a880e9800c Mon Sep 17 00:00:00 2001 From: "kilian.funk" Date: Sat, 7 Oct 2023 08:14:15 -0700 Subject: [PATCH] Fix: Skip aliases for unloaded toolchains (#1472) Toolchains without a checksum are skipped in python_register_toolchain. This commit also skips the creation of aliases to those toolchains. Closes #1472 --- python/private/toolchains_repo.bzl | 26 +++++++++++++++++--------- python/repositories.bzl | 3 +++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/python/private/toolchains_repo.bzl b/python/private/toolchains_repo.bzl index 20dc9763e0..b3c8fe5b4f 100644 --- a/python/private/toolchains_repo.bzl +++ b/python/private/toolchains_repo.bzl @@ -155,22 +155,23 @@ def _toolchain_aliases_impl(rctx): 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") +load("@rules_python//python:versions.bzl", "gen_python_config_settings") +load(":defs.bzl", "PLATFORMS") gen_python_config_settings() exports_files(["defs.bzl"]) -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()}})) +alias(name = "files", actual = select({{":" + item: "@{py_repository}_" + item + "//:files" for item in PLATFORMS}})) +alias(name = "includes", actual = select({{":" + item: "@{py_repository}_" + item + "//:includes" for item in PLATFORMS}})) +alias(name = "libpython", actual = select({{":" + item: "@{py_repository}_" + item + "//:libpython" for item in PLATFORMS}})) +alias(name = "py3_runtime", actual = select({{":" + item: "@{py_repository}_" + item + "//:py3_runtime" for item in PLATFORMS}})) +alias(name = "python_headers", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_headers" for item in PLATFORMS}})) +alias(name = "python_runtimes", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_runtimes" for item in PLATFORMS}})) +alias(name = "python3", actual = select({{":" + item: "@{py_repository}_" + item + "//:" + ("python.exe" if "windows" in item else "bin/python3") for item in PLATFORMS}})) """.format( py_repository = rctx.attr.user_repository_name, ) if not is_windows: build_contents += """\ -alias(name = "pip", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_runtimes" for item in PLATFORMS.keys() if "windows" not in item}})) +alias(name = "pip", actual = select({{":" + item: "@{py_repository}_" + item + "//:python_runtimes" for item in PLATFORMS if "windows" not in item}})) """.format( py_repository = rctx.attr.user_repository_name, host_platform = host_platform, @@ -195,6 +196,9 @@ load("{rules_python}//python:pip.bzl", _compile_pip_requirements = "compile_pip_ host_platform = "{host_platform}" interpreter = "@{py_repository}_{host_platform}//:{python3_binary_path}" +PLATFORMS = [ +{loaded_platforms} +] def py_binary(name, **kwargs): return _py_binary( @@ -231,6 +235,7 @@ def compile_pip_requirements(name, **kwargs): python_version = rctx.attr.python_version, python3_binary_path = python3_binary_path, rules_python = get_repository_name(rctx.attr._rules_python_workspace), + loaded_platforms = "\n".join([" \"{}\",".format(p) for p in rctx.attr.platforms]), )) toolchain_aliases = repository_rule( @@ -244,6 +249,9 @@ toolchain_aliases = repository_rule( mandatory = True, doc = "The base name for all created repositories, like 'python38'.", ), + "platforms": attr.string_list( + doc = "List of platforms for which aliases shall be created", + ), "_rules_python_workspace": attr.label(default = Label("//:WORKSPACE")), }, ) diff --git a/python/repositories.bzl b/python/repositories.bzl index 050ba14a76..5333c2dbfa 100644 --- a/python/repositories.bzl +++ b/python/repositories.bzl @@ -553,11 +553,13 @@ def python_register_toolchains( )) register_coverage_tool = False + loaded_platforms = [] for platform in PLATFORMS.keys(): sha256 = tool_versions[python_version]["sha256"].get(platform, None) if not sha256: continue + loaded_platforms.append(platform) (release_filename, urls, strip_prefix, patches) = get_release_info(platform, python_version, base_url, tool_versions) # allow passing in a tool version @@ -604,6 +606,7 @@ def python_register_toolchains( name = name, python_version = python_version, user_repository_name = name, + platforms = loaded_platforms, ) # in bzlmod we write out our own toolchain repos pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy