Skip to content
Merged
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: 4 additions & 0 deletions python/private/get_local_runtime_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import glob
import json
import os
import platform
import sys
import sysconfig
from typing import Any
Expand Down Expand Up @@ -247,6 +248,7 @@ def _unique_basenames(inputs: dict[str, None]) -> list[str]:
"abi_dynamic_libraries": _unique_basenames(abi_dynamic_libraries),
"abi_interface_libraries": _unique_basenames(abi_interface_libraries),
"abi_flags": abi_flags,
"abi_tag": config_vars.get("SOABI") or "",
"shlib_suffix": ".dylib" if _IS_DARWIN else "",
"additional_dlls": dlls,
"defines": defines,
Expand All @@ -265,6 +267,8 @@ def _get_base_executable() -> str:
"include": sysconfig.get_path("include"),
"implementation_name": sys.implementation.name,
"base_executable": _get_base_executable(),
"sys_platform": sys.platform,
"platform_machine": platform.machine(),
}
data.update(_get_python_library_info(_get_base_executable()))
print(json.dumps(data))
9 changes: 9 additions & 0 deletions python/private/local_runtime_repo.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ define_local_runtime_toolchain_impl(
minor = "{minor}",
micro = "{micro}",
abi_flags = "{abi_flags}",
abi_tag = "{abi_tag}",
os = "{os}",
implementation_name = "{implementation_name}",
interpreter_path = "{interpreter_path}",
Expand All @@ -44,6 +45,8 @@ define_local_runtime_toolchain_impl(
abi3_interface_library = {abi3_interface_library},
abi3_libraries = {abi3_libraries},
additional_dlls = {additional_dlls},
sys_platform = "{sys_platform}",
platform_machine = "{platform_machine}",
)
"""

Expand All @@ -53,6 +56,7 @@ def _expand_incompatible_template():
minor = "0",
micro = "0",
abi_flags = "",
abi_tag = "",
os = "@platforms//:incompatible",
implementation_name = "incompatible",
interpreter_path = "/incompatible",
Expand All @@ -62,6 +66,8 @@ def _expand_incompatible_template():
abi3_interface_library = "None",
abi3_libraries = "[]",
additional_dlls = "[]",
sys_platform = "",
platform_machine = "",
)

def _norm_path(path):
Expand Down Expand Up @@ -210,6 +216,7 @@ def _local_runtime_repo_impl(rctx):
minor = info["minor"],
micro = info["micro"],
abi_flags = info["abi_flags"],
abi_tag = info["abi_tag"],
os = "@platforms//os:{}".format(repo_utils.get_platforms_os_name(rctx)),
implementation_name = info["implementation_name"],
interpreter_path = _norm_path(interpreter_path),
Expand All @@ -219,6 +226,8 @@ def _local_runtime_repo_impl(rctx):
abi3_interface_library = repr(abi3_interface_library),
abi3_libraries = repr(abi3_libraries),
additional_dlls = repr(additional_dlls),
sys_platform = info["sys_platform"],
platform_machine = info["platform_machine"],
)
logger.debug(lambda: "BUILD.bazel\n{}".format(build_bazel))

Expand Down
12 changes: 11 additions & 1 deletion python/private/local_runtime_repo_setup.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ def define_local_runtime_toolchain_impl(
defines,
abi3_interface_library,
abi3_libraries,
additional_dlls):
additional_dlls,
sys_platform = "",
platform_machine = "",
abi_tag = ""):
"""Defines a toolchain implementation for a local Python runtime.

Generates public targets:
Expand Down Expand Up @@ -71,6 +74,9 @@ def define_local_runtime_toolchain_impl(
e.g. ["lib/python3.dll"] or ["lib/python3.so"]
additional_dlls: `list[str]` Path[s] to additional DLLs.
e.g. ["lib/msvcrt123.dll"]
sys_platform: `str` The PEP 508 `sys_platform` marker, e.g. 'linux', 'darwin', 'win32'.
platform_machine: `str` The PEP 508 `platform_machine` marker, e.g. 'x86_64', 'aarch64'.
abi_tag: `str` The ABI tag for extension modules, e.g. 'cpython-311'.
"""
major_minor = "{}.{}".format(major, minor)
major_minor_micro = "{}.{}".format(major_minor, micro)
Expand Down Expand Up @@ -183,10 +189,14 @@ def define_local_runtime_toolchain_impl(

py_cc_toolchain(
name = "py_cc_toolchain",
abi_flags = abi_flags,
abi_tag = abi_tag,
headers = ":python_headers",
headers_abi3 = ":python_headers_abi3",
libs = ":libpython",
platform_machine = platform_machine,
python_version = major_minor_micro,
sys_platform = sys_platform,
visibility = ["//visibility:public"],
)

Expand Down