From 0ad5159dfaf82a7d043590c792d0bda50f820c69 Mon Sep 17 00:00:00 2001 From: Ivo List Date: Fri, 24 Oct 2025 14:09:47 +0200 Subject: [PATCH 1/2] clean: Remove uses of native C++ implementation All uses need to be through rules_cc, because C++ will be removed from Bazel. --- python/private/BUILD.bazel | 10 ++-------- python/private/cc_helper.bzl | 23 ----------------------- python/private/common.bzl | 2 +- python/private/py_executable.bzl | 11 ++++++----- 4 files changed, 9 insertions(+), 37 deletions(-) delete mode 100644 python/private/cc_helper.bzl diff --git a/python/private/BUILD.bazel b/python/private/BUILD.bazel index 7b8c82de8f..87d4411306 100644 --- a/python/private/BUILD.bazel +++ b/python/private/BUILD.bazel @@ -118,23 +118,17 @@ bzl_library( srcs = ["bzlmod_enabled.bzl"], ) -bzl_library( - name = "cc_helper_bzl", - srcs = ["cc_helper.bzl"], - deps = [":py_internal_bzl"], -) - bzl_library( name = "common_bzl", srcs = ["common.bzl"], deps = [ - ":cc_helper_bzl", ":py_cc_link_params_info_bzl", ":py_info_bzl", ":py_internal_bzl", ":reexports_bzl", ":rules_cc_srcs_bzl", "@bazel_skylib//lib:paths", + "@rules_cc//cc/common:cc_helper_bzl", ], ) @@ -404,7 +398,6 @@ bzl_library( srcs = ["py_executable.bzl"], deps = [ ":attributes_bzl", - ":cc_helper_bzl", ":common_bzl", ":common_labels_bzl", ":flags_bzl", @@ -422,6 +415,7 @@ bzl_library( "@bazel_skylib//lib:paths", "@bazel_skylib//lib:structs", "@bazel_skylib//rules:common_settings", + "@rules_cc//cc/common:cc_helper_bzl", ], ) diff --git a/python/private/cc_helper.bzl b/python/private/cc_helper.bzl deleted file mode 100644 index 552b42eae8..0000000000 --- a/python/private/cc_helper.bzl +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2023 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PYTHON RULE IMPLEMENTATION ONLY: Do not use outside of the rule implementations and their tests. - -Adapter for accessing Bazel's internal cc_helper. - -These may change at any time and are closely coupled to the rule implementation. -""" - -load(":py_internal.bzl", "py_internal") - -cc_helper = getattr(py_internal, "cc_helper", None) diff --git a/python/private/common.bzl b/python/private/common.bzl index ddeea6ed2d..fc9e9f9f93 100644 --- a/python/private/common.bzl +++ b/python/private/common.bzl @@ -15,8 +15,8 @@ load("@bazel_skylib//lib:paths.bzl", "paths") load("@rules_cc//cc/common:cc_common.bzl", "cc_common") +load("@rules_cc//cc/common:cc_helper.bzl", "cc_helper") load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") -load(":cc_helper.bzl", "cc_helper") load(":py_cc_link_params_info.bzl", "PyCcLinkParamsInfo") load(":py_info.bzl", "PyInfo", "PyInfoBuilder") load(":py_internal.bzl", "py_internal") diff --git a/python/private/py_executable.bzl b/python/private/py_executable.bzl index 1a5ad4c3c6..e8e7a92512 100644 --- a/python/private/py_executable.bzl +++ b/python/private/py_executable.bzl @@ -17,7 +17,9 @@ load("@bazel_skylib//lib:dicts.bzl", "dicts") load("@bazel_skylib//lib:paths.bzl", "paths") load("@bazel_skylib//lib:structs.bzl", "structs") load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") +load("@rules_cc//cc:find_cc_toolchain.bzl", "find_cc_toolchain") load("@rules_cc//cc/common:cc_common.bzl", "cc_common") +load("@rules_cc//cc/common:cc_helper.bzl", "cc_helper") load(":attr_builders.bzl", "attrb") load( ":attributes.bzl", @@ -32,7 +34,6 @@ load( "apply_config_settings_attr", ) load(":builders.bzl", "builders") -load(":cc_helper.bzl", "cc_helper") load( ":common.bzl", "collect_cc_info", @@ -1092,7 +1093,7 @@ def py_executable_base_impl(ctx, *, semantics, is_test, inherited_environment = ) def _get_build_info(ctx, cc_toolchain): - build_info_files = py_internal.cc_toolchain_build_info_files(cc_toolchain) + build_info_files = cc_toolchain._build_info_files if cc_helper.is_stamping_enabled(ctx): # Makes the target depend on BUILD_INFO_KEY, which helps to discover stamped targets # See b/326620485 for more details. @@ -1400,7 +1401,7 @@ def _write_build_data(ctx, central_uncachable_version_file, extra_write_build_da # https://github.com/bazelbuild/bazel/issues/9363 "INFO_FILE": ctx.info_file.path, "OUTPUT": build_data.path, - "PLATFORM": cc_helper.find_cpp_toolchain(ctx).toolchain_id, + "PLATFORM": find_cc_toolchain(ctx).toolchain_id, "TARGET": str(ctx.label), "VERSION_FILE": version_file.path, }, extra_write_build_data_env), @@ -1444,7 +1445,7 @@ def _get_native_deps_details(ctx, *, semantics, cc_details, is_test): # The regular cc_common.link API can't be used because several # args are private-use only; see # private comments - py_internal.link( + getattr(py_internal, "link", cc_common.link)( name = ctx.label.name, actions = ctx.actions, linking_contexts = [cc_info.linking_context], @@ -1475,7 +1476,7 @@ def _create_shared_native_deps_dso( requested_features, cc_toolchain): linkstamps = [ - py_internal.linkstamp_file(linkstamp) + linkstamp.file() for linker_input in cc_info.linking_context.linker_inputs.to_list() for linkstamp in linker_input.linkstamps ] From ba6d80d195c662eff42b2dc3f57ebc096c5c544e Mon Sep 17 00:00:00 2001 From: Ivo List Date: Fri, 24 Oct 2025 16:07:08 +0200 Subject: [PATCH 2/2] Bump rules_cc version --- MODULE.bazel | 2 +- WORKSPACE | 4 ++++ internal_dev_deps.bzl | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 5854595bed..774a6ff328 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "bazel_features", version = "1.21.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") -bazel_dep(name = "rules_cc", version = "0.1.5") +bazel_dep(name = "rules_cc", version = "0.2.11") bazel_dep(name = "platforms", version = "0.0.11") # Those are loaded only when using py_proto_library diff --git a/WORKSPACE b/WORKSPACE index 077ddb5e68..7750a04a14 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -29,6 +29,10 @@ load("//:internal_dev_deps.bzl", "rules_python_internal_deps") rules_python_internal_deps() +load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo") + +compatibility_proxy_repo() + load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies") rules_java_dependencies() diff --git a/internal_dev_deps.bzl b/internal_dev_deps.bzl index 811240a06a..753187ba07 100644 --- a/internal_dev_deps.bzl +++ b/internal_dev_deps.bzl @@ -238,9 +238,9 @@ def rules_python_internal_deps(): http_archive( name = "rules_cc", - urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.1.5/rules_cc-0.1.5.tar.gz"], - sha256 = "b8b918a85f9144c01f6cfe0f45e4f2838c7413961a8ff23bc0c6cdf8bb07a3b6", - strip_prefix = "rules_cc-0.1.5", + sha256 = "5287821524d1c1d20f1c0ffa90bd2c2d776473dd8c84dafa9eb783150286d825", + strip_prefix = "rules_cc-0.2.11", + url = "https://github.com/bazelbuild/rules_cc/releases/download/0.2.11/rules_cc-0.2.11.tar.gz", ) http_archive(