143 lines
4.2 KiB
Python
143 lines
4.2 KiB
Python
# Copyright 2024 The OpenXLA Authors.
|
|
#
|
|
# 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.
|
|
# ============================================================================
|
|
|
|
load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
|
|
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
|
|
|
|
# copybara:comment_begin(oss-only)
|
|
load("@llvm_linux_x86_64//:version.bzl", _llvm_version = "VERSION")
|
|
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
|
|
load("@xla//third_party/rules_python/python:py_test.bzl", "py_test")
|
|
load("//xla:pytype.bzl", "pytype_strict_binary", "pytype_strict_library")
|
|
load("//xla/tsl:tsl.bzl", "if_oss")
|
|
|
|
_LLVM_REPO_NAME = "llvm{}_linux_x86_64".format(_llvm_version)
|
|
# copybara:comment_end_and_uncomment_begin
|
|
# _LLVM_REPO_NAME = ""
|
|
# copybara:uncomment_end
|
|
|
|
package(
|
|
# copybara:uncomment default_applicable_licenses = ["//tensorflow:license"],
|
|
licenses = ["notice"],
|
|
)
|
|
|
|
pytype_strict_binary(
|
|
name = "build",
|
|
srcs = ["build.py"],
|
|
)
|
|
|
|
pytype_strict_library(
|
|
name = "clang_tidy_diff_lib",
|
|
srcs = ["clang_tidy_diff.py"],
|
|
deps = [
|
|
"//build_tools/lint:diff_parser",
|
|
],
|
|
)
|
|
|
|
pytype_strict_binary(
|
|
name = "clang_tidy_diff",
|
|
srcs = ["clang_tidy_diff.py"],
|
|
data = if_oss([
|
|
":clang_apply_replacements_bin",
|
|
]),
|
|
main = "clang_tidy_diff.py",
|
|
deps = [
|
|
":clang_tidy_diff_lib",
|
|
],
|
|
)
|
|
|
|
py_test(
|
|
name = "clang_tidy_diff_test",
|
|
srcs = ["clang_tidy_diff_test.py"],
|
|
deps = [
|
|
":clang_tidy_diff_lib",
|
|
"@absl_py//absl/testing:absltest",
|
|
"@absl_py//absl/testing:parameterized",
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "generated_build_commands",
|
|
outs = ["generated_commands.txt"],
|
|
cmd = "$(location //build_tools/ci:build) --dump_commands > $(OUTS)",
|
|
tags = ["not_run:arm"],
|
|
tools = [":build"],
|
|
)
|
|
|
|
diff_test(
|
|
name = "build_command_golden_test",
|
|
failure_message = """Regenerate with `PYTHONDONTWRITEBYTECODE=1 python3 build.py --dump_commands > golden_commands.txt`.""",
|
|
file1 = "golden_commands.txt",
|
|
file2 = ":generated_build_commands",
|
|
tags = ["not_run:arm"],
|
|
)
|
|
|
|
sh_binary(
|
|
name = "parallel_gpu_execute",
|
|
srcs = ["parallel_gpu_execute.sh"],
|
|
)
|
|
|
|
# TODO: When upstream rules expose clang-tidy use that instead of explicitly creating one.
|
|
expand_template(
|
|
name = "generate_wrapper_script",
|
|
out = "clang_tidy_wrapper.sh",
|
|
substitutions = {
|
|
"%LLVM_REPO_NAME%": _LLVM_REPO_NAME,
|
|
},
|
|
template = "clang_tidy_wrapper.sh.tpl",
|
|
)
|
|
|
|
sh_binary(
|
|
name = "clang_tidy_bin",
|
|
srcs = [":generate_wrapper_script"],
|
|
data = [
|
|
# This not for g3. Only for running clang-tidy on CI/locally for OSS workflows.
|
|
"@{}//:all".format(_LLVM_REPO_NAME), # buildifier: disable=platform-specific-binaries
|
|
],
|
|
tags = [
|
|
"manual", # This binary only runs via explicit targeting.
|
|
"notap", # Not for g3.
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
expand_template(
|
|
name = "generate_apply_replacements_wrapper_script",
|
|
out = "clang_apply_replacements_wrapper.sh",
|
|
substitutions = {
|
|
"%LLVM_REPO_NAME%": _LLVM_REPO_NAME,
|
|
},
|
|
template = "clang_apply_replacements_wrapper.sh.tpl",
|
|
)
|
|
|
|
sh_binary(
|
|
name = "clang_apply_replacements_bin",
|
|
srcs = [":generate_apply_replacements_wrapper_script"],
|
|
data = [
|
|
# This not for g3. Only for running clang-tidy on CI/locally for OSS workflows.
|
|
"@{}//:all".format(_LLVM_REPO_NAME), # buildifier: disable=platform-specific-binaries
|
|
],
|
|
tags = [
|
|
"manual", # This binary only runs via explicit targeting.
|
|
"notap", # Not for g3.
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
sh_binary(
|
|
name = "run_clang_tidy",
|
|
srcs = ["run_clang_tidy.sh"],
|
|
)
|