diff --git a/.bazelrc b/.bazelrc index 5f706c8..cd0db27 100644 --- a/.bazelrc +++ b/.bazelrc @@ -35,15 +35,20 @@ build:linux --copt=-w build:macos --copt=-w # By default, build TF in C++ 17 mode. -build:linux --cxxopt=-std=c++17 +build --cxxopt=-std=c++17 +build --host_cxxopt=-std=c++17 build:linux --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=1 -build:linux --host_cxxopt=-std=c++17 -build:macos --cxxopt=-std=c++17 build:macos --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=1 -build:macos --host_cxxopt=-std=c++17 + +# Disable sframe in assembler to avoid linker errors with gcc 15 (removed for PR compatibility) + + + # Suppress all warning messages. build:short_logs --output_filter=DONT_MATCH_ANYTHING build:macos --macos_minimum_os=10.12 + +common --noenable_bzlmod diff --git a/.bazelversion b/.bazelversion index e69de29..56742b6 100644 --- a/.bazelversion +++ b/.bazelversion @@ -0,0 +1,2 @@ +7.7.0 + diff --git a/WORKSPACE b/WORKSPACE index dcede96..c5ef046 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -16,6 +16,58 @@ workspace(name = "struct2tensor") +local_repository( + name = "python_version_repo", + path = "third_party/python_version_repo", +) + +local_repository( + name = "python_3_11_host", + path = "third_party/python_3_11_host", +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") + +local_repository( + name = "rules_java", + path = "third_party/rules_java", +) + +local_repository( + name = "local_config_cuda", + path = "third_party/local_config_cuda", +) + +local_repository( + name = "local_config_tensorrt", + path = "third_party/local_config_tensorrt", +) + +local_repository( + name = "local_config_rocm", + path = "third_party/local_config_rocm", +) + +local_repository( + name = "local_config_sycl", + path = "third_party/local_config_sycl", +) + +local_repository( + name = "tf_wheel_version_suffix", + path = "third_party/tf_wheel_version_suffix", +) + +maybe( + http_archive, + name = "platforms", + urls = [ + "https://github.com/bazelbuild/platforms/releases/download/0.0.11/platforms-0.0.11.tar.gz", + ], + sha256 = "29742e87275809b5e598dc2f04d86960cc7a55b3067d97221c9abbc9926bff0f", +) + load("//tf:tf_configure.bzl", "tf_configure") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") @@ -26,23 +78,49 @@ tf_configure(name = "local_config_tf") ##################################################################################### + + +# ===== Abseil dependency ===== http_archive( - name = "zlib", - build_file = "@com_google_protobuf//:third_party/zlib.BUILD", - sha256 = "17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c", - strip_prefix = "zlib-1.3.1", - urls = ["https://github.com/madler/zlib/archive/v1.3.1.tar.gz"], + name = "com_google_absl", + sha256 = "d1abe9da2003e6cbbd7619b0ced3e52047422f4f4ac6c66a9bef5d2e99fea837", + strip_prefix = "abseil-cpp-d38452e1ee03523a208362186fd42248ff2609f6", + urls = [ + "https://github.com/abseil/abseil-cpp/archive/d38452e1ee03523a208362186fd42248ff2609f6.tar.gz", + ], + patches = [ + "//third_party:abseil_visibility.patch", + ], + patch_args = ["-p0"], +) + +http_archive( + name = "abseil-cpp", + sha256 = "d1abe9da2003e6cbbd7619b0ced3e52047422f4f4ac6c66a9bef5d2e99fea837", + strip_prefix = "abseil-cpp-d38452e1ee03523a208362186fd42248ff2609f6", + urls = [ + "https://github.com/abseil/abseil-cpp/archive/d38452e1ee03523a208362186fd42248ff2609f6.tar.gz", + ], + patches = [ + "//third_party:abseil_visibility.patch", + ], + patch_args = ["-p0"], ) -# ===== Protobuf 4.25.6 dependency ===== + + + +# ===== Protobuf 6.31.1 dependency ===== # Must be declared BEFORE TensorFlow's workspaces to override the version they pull http_archive( name = "com_google_protobuf", - sha256 = "4e6727bc5d23177edefa3ad86fd2f5a92cd324151636212fd1f7f13aef3fd2b7", - strip_prefix = "protobuf-4.25.6", + sha256 = "6e09bbc950ba60c3a7b30280210cd285af8d7d8ed5e0a6ed101c72aff22e8d88", + strip_prefix = "protobuf-6.31.1", urls = [ - "https://github.com/protocolbuffers/protobuf/archive/v4.25.6.tar.gz", + "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v6.31.1.zip", ], + patches = ["//third_party:protobuf_retain_options.patch"], + patch_args = ["-p1"], ) # ===== TensorFlow dependency ===== @@ -60,23 +138,55 @@ http_archive( # 3. Request the new archive to be mirrored on mirror.bazel.build for more # reliable downloads. -_TENSORFLOW_GIT_COMMIT = "3c92ac03cab816044f7b18a86eb86aa01a294d95" # tf 2.17.1 -_TENSORFLOW_ARCHIVE_SHA256 = "317dd95c4830a408b14f3e802698eb68d70d81c7c7cfcd3d28b0ba023fe84a68" +_TENSORFLOW_GIT_COMMIT = "2.21.0" # tf 2.21.0 +_TENSORFLOW_ARCHIVE_SHA256 = "ef3568bb4865d6c1b2564fb5689c19b6b9a5311572cd1f2ff9198636a8520921" http_archive( name = "org_tensorflow", sha256 = _TENSORFLOW_ARCHIVE_SHA256, urls = [ - "https://github.com/tensorflow/tensorflow/archive/%s.tar.gz" % _TENSORFLOW_GIT_COMMIT, + "https://github.com/tensorflow/tensorflow/archive/v%s.tar.gz" % _TENSORFLOW_GIT_COMMIT, ], strip_prefix = "tensorflow-%s" % _TENSORFLOW_GIT_COMMIT, patches = ["//third_party:tensorflow.patch"], patch_args = ["-p1"], + repo_mapping = { + "@abseil-cpp": "@com_google_absl", + }, +) + +http_archive( + name = "llvm-raw", + sha256 = "3f986184ee126677dbd77edb16d6b82c057ec869fefd7a9871979941e52e837a", + strip_prefix = "llvm-project-909041e4802c4b9a2223ca04099f35bf1dbbd460", + urls = [ + "https://storage.googleapis.com/mirror.tensorflow.org/github.com/llvm/llvm-project/archive/909041e4802c4b9a2223ca04099f35bf1dbbd460.tar.gz", + "https://github.com/llvm/llvm-project/archive/909041e4802c4b9a2223ca04099f35bf1dbbd460.tar.gz", + ], + build_file = "@xla//third_party/llvm:llvm.BUILD", + patches = [ + "@xla//third_party/llvm:generated.patch", + "@xla//third_party/llvm:build.patch", + "@xla//third_party/llvm:mathextras.patch", + "@xla//third_party/llvm:toolchains.patch", + "@xla//third_party/llvm:zstd.patch", + "@xla//third_party/llvm:lit_test.patch", + "//third_party:llvm_configure.patch", + ], + patch_args = ["-p1"], +) + +http_archive( + name = "zlib", + build_file = "@com_google_protobuf//:third_party/zlib.BUILD", + sha256 = "17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c", + strip_prefix = "zlib-1.3.1", + urls = ["https://github.com/madler/zlib/archive/v1.3.1.tar.gz"], ) -load("//third_party:python_configure.bzl", "local_python_configure") -local_python_configure(name = "local_config_python") -local_python_configure(name = "local_execution_config_python") +# load("//third_party:python_configure.bzl", "local_python_configure") +# local_python_configure(name = "local_config_python") +# local_python_configure(name = "local_execution_config_python") # Please add all new struct2tensor dependencies in workspace.bzl. diff --git a/setup.py b/setup.py index f072d74..8d1bce6 100644 --- a/setup.py +++ b/setup.py @@ -79,16 +79,16 @@ def select_constraint(default, nightly=None, git_master=None): # TODO(b/263060885): Remove the explicit numpy dependency once TF works # with numpy>=1.24. 'numpy>=1.22', - 'protobuf>=4.25.2,<6.0.0;python_version>="3.11"', - 'protobuf>=4.21.6,<6.0.0;python_version<"3.11"', - 'tensorflow>=2.17,<2.18', + 'protobuf>=4.25.2,<7.0.0;python_version>="3.11"', + 'protobuf>=4.21.6,<7.0.0;python_version<"3.11"', + 'tensorflow>=2.21,<2.22', 'tensorflow-metadata' + select_constraint( default='>=1.17.0,<1.18.0', nightly='>=1.18.0.dev', git_master='@git+https://github.com/tensorflow/metadata@master', ), - 'pyarrow>=10,<11', + 'pyarrow>=14', ], # Add in any packaged data. include_package_data=True, diff --git a/struct2tensor/kernels/equi_join_any_indices_op.cc b/struct2tensor/kernels/equi_join_any_indices_op.cc index a4eade7..19e7fe4 100644 --- a/struct2tensor/kernels/equi_join_any_indices_op.cc +++ b/struct2tensor/kernels/equi_join_any_indices_op.cc @@ -18,6 +18,7 @@ limitations under the License. // This differs from equi_join_indices in that vectors a,b do not need to be // monotonically increasing. +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/kernels/equi_join_indices_op.cc b/struct2tensor/kernels/equi_join_indices_op.cc index 0e881bc..47f0906 100644 --- a/struct2tensor/kernels/equi_join_indices_op.cc +++ b/struct2tensor/kernels/equi_join_indices_op.cc @@ -22,6 +22,7 @@ limitations under the License. // Notice that when combined with tf.gather(...), this can be used to do "some" // sparse_gather operations. +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/kernels/parquet/parquet_dataset_kernel.cc b/struct2tensor/kernels/parquet/parquet_dataset_kernel.cc index 449a858..64daab0 100644 --- a/struct2tensor/kernels/parquet/parquet_dataset_kernel.cc +++ b/struct2tensor/kernels/parquet/parquet_dataset_kernel.cc @@ -12,6 +12,7 @@ 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. ==============================================================================*/ +#include #include "absl/container/flat_hash_map.h" #include "struct2tensor/kernels/parquet/parquet_reader.h" #include "struct2tensor/kernels/parquet/parquet_reader_util.h" diff --git a/struct2tensor/kernels/run_length_before_op.cc b/struct2tensor/kernels/run_length_before_op.cc index fc31d68..628726d 100644 --- a/struct2tensor/kernels/run_length_before_op.cc +++ b/struct2tensor/kernels/run_length_before_op.cc @@ -16,6 +16,7 @@ limitations under the License. // b_n := \sum_{i=0}^{n-1} I(a_i=a_n) // This assumes that for all a_i, a_j, if i <= j, then a_i <= a_j. +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/ops/decode_proto_map_op.cc b/struct2tensor/ops/decode_proto_map_op.cc index f23b93a..732f388 100644 --- a/struct2tensor/ops/decode_proto_map_op.cc +++ b/struct2tensor/ops/decode_proto_map_op.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/ops/decode_proto_sparse_op.cc b/struct2tensor/ops/decode_proto_sparse_op.cc index 88e6d5f..12c69cc 100644 --- a/struct2tensor/ops/decode_proto_sparse_op.cc +++ b/struct2tensor/ops/decode_proto_sparse_op.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/ops/equi_join_any_indices_op.cc b/struct2tensor/ops/equi_join_any_indices_op.cc index 9d1a591..d37fa02 100644 --- a/struct2tensor/ops/equi_join_any_indices_op.cc +++ b/struct2tensor/ops/equi_join_any_indices_op.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/ops/equi_join_indices_op.cc b/struct2tensor/ops/equi_join_indices_op.cc index 25341d2..82347b3 100644 --- a/struct2tensor/ops/equi_join_indices_op.cc +++ b/struct2tensor/ops/equi_join_indices_op.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/struct2tensor/ops/op_kernel_registration_test.cc b/struct2tensor/ops/op_kernel_registration_test.cc index 76973b5..a8cd100 100644 --- a/struct2tensor/ops/op_kernel_registration_test.cc +++ b/struct2tensor/ops/op_kernel_registration_test.cc @@ -12,6 +12,7 @@ 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. ==============================================================================*/ +#include #include #include diff --git a/struct2tensor/ops/parquet_dataset_op.cc b/struct2tensor/ops/parquet_dataset_op.cc index be20a61..279c8f6 100644 --- a/struct2tensor/ops/parquet_dataset_op.cc +++ b/struct2tensor/ops/parquet_dataset_op.cc @@ -12,6 +12,7 @@ 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. ==============================================================================*/ +#include #include "tensorflow/core/framework/common_shape_fns.h" #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/op_def_builder.h" diff --git a/struct2tensor/ops/run_length_before_op.cc b/struct2tensor/ops/run_length_before_op.cc index 849f896..7258472 100644 --- a/struct2tensor/ops/run_length_before_op.cc +++ b/struct2tensor/ops/run_length_before_op.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include "tensorflow/core/framework/op.h" #include "tensorflow/core/framework/shape_inference.h" diff --git a/third_party/abseil_visibility.patch b/third_party/abseil_visibility.patch new file mode 100644 index 0000000..3a16ecf --- /dev/null +++ b/third_party/abseil_visibility.patch @@ -0,0 +1,7 @@ +--- absl/base/BUILD.bazel ++++ absl/base/BUILD.bazel +@@ -546,3 +546,3 @@ + visibility = [ +- "//absl:__subpackages__", ++ "//visibility:public", + ], diff --git a/third_party/llvm_configure.patch b/third_party/llvm_configure.patch new file mode 100644 index 0000000..adf3c3e --- /dev/null +++ b/third_party/llvm_configure.patch @@ -0,0 +1,11 @@ +--- a/utils/bazel/configure.bzl ++++ b/utils/bazel/configure.bzl +@@ -53,7 +53,7 @@ + name = entry.basename + full_rel_path = rel_dir + "/" + name + +- if entry.is_dir: ++ if repository_ctx.execute(["test", "-d", str(entry)]).return_code == 0: + stack.append(full_rel_path) + overlay_dirs[name] = None + else: diff --git a/third_party/local_config_cuda/BUILD b/third_party/local_config_cuda/BUILD new file mode 100644 index 0000000..c359e10 --- /dev/null +++ b/third_party/local_config_cuda/BUILD @@ -0,0 +1,5 @@ +config_setting( + name = "is_cuda_enabled", + values = {"define": "never_match=true"}, + visibility = ["//visibility:public"], +) diff --git a/third_party/local_config_cuda/WORKSPACE b/third_party/local_config_cuda/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_cuda/cuda/BUILD b/third_party/local_config_cuda/cuda/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_cuda/cuda/build_defs.bzl b/third_party/local_config_cuda/cuda/build_defs.bzl new file mode 100644 index 0000000..fbc0db7 --- /dev/null +++ b/third_party/local_config_cuda/cuda/build_defs.bzl @@ -0,0 +1,20 @@ +def if_cuda_is_configured(x, no_cuda = []): + return no_cuda + +def is_cuda_configured(): + return False + +def if_cuda_newer_than(wanted_ver, if_true, if_false = []): + return if_false + +def if_cuda(if_true, if_false = []): + return if_false + +def cuda_library(**kwargs): + native.cc_library(**kwargs) + +def if_cuda_exec(if_true, if_false = []): + return if_false + +def cuda_gpu_architectures(): + return [] diff --git a/third_party/local_config_rocm/BUILD b/third_party/local_config_rocm/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_rocm/WORKSPACE b/third_party/local_config_rocm/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_rocm/rocm/BUILD b/third_party/local_config_rocm/rocm/BUILD new file mode 100644 index 0000000..ca5e267 --- /dev/null +++ b/third_party/local_config_rocm/rocm/BUILD @@ -0,0 +1,9 @@ +cc_library( + name = "hip", + visibility = ["//visibility:public"], +) + +cc_library( + name = "rocm_headers", + visibility = ["//visibility:public"], +) diff --git a/third_party/local_config_rocm/rocm/build_defs.bzl b/third_party/local_config_rocm/rocm/build_defs.bzl new file mode 100644 index 0000000..6612fa3 --- /dev/null +++ b/third_party/local_config_rocm/rocm/build_defs.bzl @@ -0,0 +1,26 @@ +def if_rocm(if_true, if_false = []): + return if_false + +def get_rbe_amdgpu_pool(**kwargs): + return "" + +def is_rocm_configured(): + return False + +def rocm_copts(**kwargs): + return [] + +def if_rocm_is_configured(x, no_rocm = []): + return no_rocm + +def if_cuda_or_rocm(if_true, if_false = []): + return if_false + +def if_gpu_is_configured(if_true, if_false = []): + return if_false + +def rocm_gpu_architectures(): + return [] + +def if_rocm_hipblaslt(if_true, if_false = []): + return if_false diff --git a/third_party/local_config_sycl/BUILD b/third_party/local_config_sycl/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_sycl/WORKSPACE b/third_party/local_config_sycl/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_sycl/sycl/BUILD b/third_party/local_config_sycl/sycl/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_sycl/sycl/build_defs.bzl b/third_party/local_config_sycl/sycl/build_defs.bzl new file mode 100644 index 0000000..283453e --- /dev/null +++ b/third_party/local_config_sycl/sycl/build_defs.bzl @@ -0,0 +1,7 @@ +load("@rules_cc//cc:cc_library.bzl", "cc_library") + +def if_sycl_is_configured(if_true, if_false = []): + return if_false + +def sycl_library(name, **kwargs): + cc_library(name = name) diff --git a/third_party/local_config_tensorrt/BUILD b/third_party/local_config_tensorrt/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_tensorrt/WORKSPACE b/third_party/local_config_tensorrt/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/local_config_tensorrt/build_defs.bzl b/third_party/local_config_tensorrt/build_defs.bzl new file mode 100644 index 0000000..c3339ad --- /dev/null +++ b/third_party/local_config_tensorrt/build_defs.bzl @@ -0,0 +1,5 @@ +def if_tensorrt(if_true, if_false = []): + return if_false + +def if_tensorrt_exec(if_true, if_false = []): + return if_false diff --git a/third_party/protobuf_retain_options.patch b/third_party/protobuf_retain_options.patch new file mode 100644 index 0000000..fea9f1a --- /dev/null +++ b/third_party/protobuf_retain_options.patch @@ -0,0 +1,7 @@ +--- a/bazel/private/proto_library_rule.bzl ++++ b/b/bazel/private/proto_library_rule.bzl +@@ -166,4 +166,3 @@ + if ctx.attr._experimental_proto_descriptor_sets_include_source_info[BuildSettingInfo].value: + args.add("--include_source_info") +- args.add("--retain_options") + diff --git a/third_party/python_3_11_host/BUILD b/third_party/python_3_11_host/BUILD new file mode 100644 index 0000000..643ea08 --- /dev/null +++ b/third_party/python_3_11_host/BUILD @@ -0,0 +1 @@ +exports_files(["python"], visibility = ["//visibility:public"]) diff --git a/third_party/python_3_11_host/WORKSPACE b/third_party/python_3_11_host/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/python_3_11_host/python b/third_party/python_3_11_host/python new file mode 100755 index 0000000..06bd986 --- /dev/null +++ b/third_party/python_3_11_host/python @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 diff --git a/third_party/python_version_repo/BUILD b/third_party/python_version_repo/BUILD new file mode 100644 index 0000000..580cae3 --- /dev/null +++ b/third_party/python_version_repo/BUILD @@ -0,0 +1 @@ +exports_files(["py_version.bzl"]) diff --git a/third_party/python_version_repo/WORKSPACE b/third_party/python_version_repo/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/python_version_repo/py_version.bzl b/third_party/python_version_repo/py_version.bzl new file mode 100644 index 0000000..eea44ac --- /dev/null +++ b/third_party/python_version_repo/py_version.bzl @@ -0,0 +1,2 @@ +HERMETIC_PYTHON_VERSION = "3.11" +USE_PYWRAP_RULES = False diff --git a/third_party/rules_java/BUILD b/third_party/rules_java/BUILD new file mode 100644 index 0000000..6423706 --- /dev/null +++ b/third_party/rules_java/BUILD @@ -0,0 +1 @@ +exports_files(["java/rules_java_deps.bzl"]) diff --git a/third_party/rules_java/WORKSPACE b/third_party/rules_java/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/rules_java/java/BUILD b/third_party/rules_java/java/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/rules_java/java/common/BUILD b/third_party/rules_java/java/common/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/rules_java/java/common/java_common.bzl b/third_party/rules_java/java/common/java_common.bzl new file mode 100644 index 0000000..ce1e536 --- /dev/null +++ b/third_party/rules_java/java/common/java_common.bzl @@ -0,0 +1 @@ +java_common = struct() diff --git a/third_party/rules_java/java/common/java_info.bzl b/third_party/rules_java/java/common/java_info.bzl new file mode 100644 index 0000000..1660a08 --- /dev/null +++ b/third_party/rules_java/java/common/java_info.bzl @@ -0,0 +1 @@ +JavaInfo = provider() diff --git a/third_party/rules_java/java/common/proguard_spec_info.bzl b/third_party/rules_java/java/common/proguard_spec_info.bzl new file mode 100644 index 0000000..a3b2446 --- /dev/null +++ b/third_party/rules_java/java/common/proguard_spec_info.bzl @@ -0,0 +1 @@ +ProguardSpecInfo = provider() diff --git a/third_party/rules_java/java/defs.bzl b/third_party/rules_java/java/defs.bzl new file mode 100644 index 0000000..581515e --- /dev/null +++ b/third_party/rules_java/java/defs.bzl @@ -0,0 +1,21 @@ +def java_library(**kwargs): + pass + +def java_binary(**kwargs): + pass + +def java_test(**kwargs): + pass + +def java_plugin(**kwargs): + pass + +def java_import(**kwargs): + pass + +def java_runtime(**kwargs): + pass + +JavaInfo = provider() + +java_common = struct() diff --git a/third_party/rules_java/java/private/BUILD b/third_party/rules_java/java/private/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/rules_java/java/private/proto_support.bzl b/third_party/rules_java/java/private/proto_support.bzl new file mode 100644 index 0000000..3093bef --- /dev/null +++ b/third_party/rules_java/java/private/proto_support.bzl @@ -0,0 +1,5 @@ +def compile(**kwargs): + pass + +def merge(**kwargs): + pass diff --git a/third_party/rules_java/java/proto/BUILD b/third_party/rules_java/java/proto/BUILD new file mode 100644 index 0000000..efe394d --- /dev/null +++ b/third_party/rules_java/java/proto/BUILD @@ -0,0 +1,4 @@ +package(default_visibility = ["//visibility:public"]) + +toolchain_type(name = "toolchain_type") +toolchain_type(name = "lite_toolchain_type") diff --git a/third_party/rules_java/java/rules_java_deps.bzl b/third_party/rules_java/java/rules_java_deps.bzl new file mode 100644 index 0000000..a1539a3 --- /dev/null +++ b/third_party/rules_java/java/rules_java_deps.bzl @@ -0,0 +1,2 @@ +def rules_java_dependencies(): + pass diff --git a/third_party/tensorflow.patch b/third_party/tensorflow.patch index f13f6fb..76a4a40 100644 --- a/third_party/tensorflow.patch +++ b/third_party/tensorflow.patch @@ -7,7 +7,7 @@ index 868d05f09..4876f801c 100644 hdrs = ["flatrep.h"], deps = [ + "@com_google_absl//absl/base", - "@local_tsl//tsl/lib/gtl:flatrep", + "@xla//xla/tsl/lib/gtl:flatrep", ], ) diff --git a/tensorflow/core/util/BUILD b/tensorflow/core/util/BUILD @@ -111,413 +111,112 @@ index 2a03c511e..8d73d6f85 100644 #include "absl/numeric/int128.h" #include "tensorflow/core/framework/types.h" #include "tensorflow/core/platform/macros.h" -diff --git a/third_party/xla/third_party/tsl/tsl/lib/gtl/BUILD b/third_party/xla/third_party/tsl/tsl/lib/gtl/BUILD -index ed2d8656f..fd53055c2 100644 ---- a/third_party/xla/third_party/tsl/tsl/lib/gtl/BUILD -+++ b/third_party/xla/third_party/tsl/tsl/lib/gtl/BUILD -@@ -58,8 +58,8 @@ cc_library( - name = "flatrep", - hdrs = ["flatrep.h"], - deps = [ -+ "//tsl/platform:prefetch", - "//tsl/platform:types", -- "@com_google_absl//absl/base:prefetch", - ], +diff --git a/third_party/repo.bzl b/third_party/repo.bzl +index 20da5ab74..3fdb67b8e0383cd54f5502ec8902d1e5/external/org_tensorflow/third_party/repo.bzl +--- a/third_party/repo.bzl ++++ b/third_party/repo.bzl +@@ -146,10 +146,10 @@ + tf_vendored = repository_rule( + implementation = _tf_vendored_impl, + doc = "Similar to local_repository, but path is relative to the root of the " + + "repository, not the root of the workspace.", + attrs = { +- "_root": attr.label(default = "//:unused"), ++ "_root": attr.label(default = "//:WORKSPACE"), + "path": attr.string(), + }, + local = True, ) - -diff --git a/third_party/xla/third_party/tsl/tsl/lib/gtl/flatrep.h b/third_party/xla/third_party/tsl/tsl/lib/gtl/flatrep.h -index dfc65844e..e9be67ca6 100644 ---- a/third_party/xla/third_party/tsl/tsl/lib/gtl/flatrep.h -+++ b/third_party/xla/third_party/tsl/tsl/lib/gtl/flatrep.h -@@ -20,7 +20,7 @@ limitations under the License. - - #include - --#include "absl/base/prefetch.h" -+#include "tsl/platform/prefetch.h" - #include "tsl/platform/types.h" - - namespace tsl { -diff --git a/third_party/xla/third_party/tsl/tsl/lib/hash/BUILD b/third_party/xla/third_party/tsl/tsl/lib/hash/BUILD -index c497abfe1..fffee96fe 100644 ---- a/third_party/xla/third_party/tsl/tsl/lib/hash/BUILD -+++ b/third_party/xla/third_party/tsl/tsl/lib/hash/BUILD -@@ -39,7 +39,6 @@ cc_library( - "//tsl/platform:types", - "@com_google_absl//absl/crc:crc32c", - "@com_google_absl//absl/strings:cord", -- "@com_google_absl//absl/strings:string_view", - ], - ) - -diff --git a/third_party/xla/third_party/tsl/tsl/platform/BUILD b/third_party/xla/third_party/tsl/tsl/platform/BUILD -index 273fd5306..028c5db06 100644 ---- a/third_party/xla/third_party/tsl/tsl/platform/BUILD -+++ b/third_party/xla/third_party/tsl/tsl/platform/BUILD -@@ -1069,10 +1069,13 @@ cc_library( - - cc_library( - name = "prefetch", -- hdrs = ["prefetch.h"], -+ hdrs = [ -+ "prefetch.h", -+ "absl_base_prefetch.h", -+ ], - compatible_with = get_compatible_with_portable(), - deps = [ -- "@com_google_absl//absl/base:prefetch", -+ "@com_google_absl//absl/base", - ], - ) - -diff --git a/third_party/xla/third_party/tsl/tsl/platform/absl_base_prefetch.h b/third_party/xla/third_party/tsl/tsl/platform/absl_base_prefetch.h -new file mode 100644 -index 000000000..429a17315 ---- /dev/null -+++ b/third_party/xla/third_party/tsl/tsl/platform/absl_base_prefetch.h -@@ -0,0 +1,62 @@ -+/* Copyright 2026 The TensorFlow 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. -+==============================================================================*/ -+ -+#ifndef ABSL_BASE_PREFETCH_H_ -+#define ABSL_BASE_PREFETCH_H_ -+ -+// Minimal compatibility shim for absl/base/prefetch.h. Provides the prefetch -+// helpers used by TensorFlow when the corresponding Abseil header is absent. -+// This should be sufficient for builds that depend on an older Abseil release. -+ -+namespace absl { -+ -+// Hints the processor to prefetch the given address into the local cache for -+// read-mostly access. -+inline void PrefetchToLocalCache(const void* addr) { -+#if defined(__GNUC__) || defined(__clang__) -+ __builtin_prefetch(addr, 0 /* read */, 3 /* high temporal locality */); -+#else -+ (void)addr; -+#endif -+} -+ -+// Hints the processor to prefetch the given address into the local cache for -+// imminent writes. -+inline void PrefetchToLocalCacheForWrite(const void* addr) { -+#if defined(__GNUC__) || defined(__clang__) -+ __builtin_prefetch(addr, 1 /* write */, 3 /* high temporal locality */); -+#else -+ (void)addr; -+#endif -+} -+ -+// Non-temporal prefetch (prefer not to pollute caches). -+inline void PrefetchToLocalCacheNta(const void* addr) { -+#if defined(__GNUC__) || defined(__clang__) -+ __builtin_prefetch(addr, 0 /* read */, 0 /* no temporal locality */); -+#else -+ (void)addr; -+#endif -+} -+ -+// Convenience aliases mirroring Abseil's API. -+inline void Prefetch(const void* addr) { PrefetchToLocalCache(addr); } -+inline void PrefetchForWrite(const void* addr) { -+ PrefetchToLocalCacheForWrite(addr); -+} -+ -+} // namespace absl -+ -+#endif // ABSL_BASE_PREFETCH_H_ -diff --git a/third_party/xla/third_party/tsl/tsl/platform/default/build_config.bzl b/third_party/xla/third_party/tsl/tsl/platform/default/build_config.bzl -index 35cdcdc50..1920ec210 100644 ---- a/third_party/xla/third_party/tsl/tsl/platform/default/build_config.bzl -+++ b/third_party/xla/third_party/tsl/tsl/platform/default/build_config.bzl -@@ -1,7 +1,6 @@ - # Platform-specific build configurations. - - load("@com_github_grpc_grpc//bazel:generate_cc.bzl", "generate_cc") --load("@com_google_protobuf//:protobuf.bzl", "proto_gen") - load( - "@local_xla//xla/tsl:tsl.bzl", - "clean_dep", -@@ -195,18 +194,13 @@ def cc_proto_library( - if protolib_name == None: - protolib_name = name - -- genproto_deps = ([s + "_genproto" for s in protolib_deps] + -- ["@com_google_protobuf//:cc_wkt_protos_genproto"]) - if internal_bootstrap_hack: - # For pre-checked-in generated files, we add the internal_bootstrap_hack - # which will skip the codegen action. -- proto_gen( -+ native.proto_library( - name = protolib_name + "_genproto", -- srcs = srcs, -- includes = includes, -- protoc = protoc, -+ deps = protolib_deps, - visibility = ["//visibility:public"], -- deps = genproto_deps, - ) - - # An empty cc_library to make rule dependency consistent. -@@ -227,18 +221,11 @@ def cc_proto_library( - gen_hdrs = _proto_cc_hdrs(srcs, use_grpc_plugin) - outs = gen_srcs + gen_hdrs - -- proto_gen( -- name = protolib_name + "_genproto", -- srcs = srcs, -- outs = outs, -- gen_cc = 1, -- includes = includes, -- plugin = grpc_cpp_plugin, -- plugin_language = "grpc", -- plugin_options = plugin_options, -- protoc = protoc, -- visibility = ["//visibility:public"], -- deps = genproto_deps, -+ # Don't create proto_library - it should already exist from tf_proto_library -+ # Just create cc_proto_library that depends on the existing proto_library -+ native.cc_proto_library( -+ name = protolib_name + "_cc_genproto", -+ deps = [":" + protolib_name], - ) - - if use_grpc_plugin: -@@ -263,11 +250,12 @@ def cc_proto_library( - visibility = kwargs["visibility"], - ) - -+ # Depend on generated cc_proto_library instead of declaring hdrs/srcs - native.cc_library( - name = impl_name, -- srcs = gen_srcs, -- hdrs = gen_hdrs, -- deps = cc_libs + deps, -+ srcs = [], -+ hdrs = [], -+ deps = cc_libs + deps + [":" + protolib_name + "_cc_genproto"], - includes = includes, - alwayslink = 1, - **kwargs -@@ -276,8 +264,9 @@ def cc_proto_library( - name = header_only_name, - deps = [ - "@com_google_protobuf//:protobuf_headers", -+ ":" + protolib_name + "_cc_genproto", - ] + header_only_deps + if_tsl_link_protobuf([impl_name]), -- hdrs = gen_hdrs, -+ hdrs = [], - **kwargs - ) - -@@ -348,6 +337,102 @@ def cc_grpc_library( - **kwargs - ) - -+# Custom implementation for py_proto_library to support Protobuf 4.x -+# which removed the built-in py_proto_library rule. -+def _tsl_py_proto_library_impl(ctx): -+ """Generate Python code from proto_library deps.""" -+ proto_deps = ctx.attr.deps -+ all_sources = [] -+ py_infos = [] -+ -+ for dep in proto_deps: -+ if ProtoInfo in dep: -+ all_sources.extend(dep[ProtoInfo].direct_sources) -+ elif PyInfo in dep: -+ py_infos.append(dep[PyInfo]) -+ -+ # Filter workspace sources only -+ workspace_sources = [] -+ for src in all_sources: -+ if not src.short_path.startswith("external/") and not src.short_path.startswith("../"): -+ workspace_sources.append(src) -+ -+ # Generate Python files -+ py_outputs = [] -+ for proto_src in workspace_sources: -+ basename = proto_src.basename[:-6] # Remove .proto -+ py_file = ctx.actions.declare_file(basename + "_pb2.py") -+ py_outputs.append(py_file) -+ -+ if py_outputs: -+ proto_path_args = ["--proto_path=."] -+ proto_paths = {".": True} -+ -+ for dep in proto_deps: -+ if ProtoInfo in dep: -+ for src in dep[ProtoInfo].transitive_sources.to_list(): -+ if src.path.startswith("external/com_google_protobuf/"): -+ proto_path = "external/com_google_protobuf/src" -+ if proto_path not in proto_paths: -+ proto_paths[proto_path] = True -+ proto_path_args.append("--proto_path=" + proto_path) -+ elif src.path.startswith("external/"): -+ parts = src.path.split("/") -+ if len(parts) >= 2: -+ proto_path = "/".join(parts[:2]) -+ if proto_path not in proto_paths: -+ proto_paths[proto_path] = True -+ proto_path_args.append("--proto_path=" + proto_path) -+ if src.root.path and src.root.path not in proto_paths: -+ proto_paths[src.root.path] = True -+ proto_path_args.append("--proto_path=" + src.root.path) -+ -+ proto_file_args = [src.short_path for src in workspace_sources] -+ output_root = ctx.bin_dir.path -+ -+ ctx.actions.run( -+ inputs = depset(direct = workspace_sources, transitive = [ -+ dep[ProtoInfo].transitive_sources for dep in proto_deps if ProtoInfo in dep -+ ]), -+ outputs = py_outputs, -+ executable = ctx.executable._protoc, -+ arguments = ["--python_out=" + output_root] + proto_path_args + proto_file_args, -+ mnemonic = "ProtocPython", -+ ) -+ -+ all_transitive_sources = [depset(py_outputs)] -+ all_imports = [depset([ctx.bin_dir.path])] if py_outputs else [] -+ -+ for py_info in py_infos: -+ all_transitive_sources.append(py_info.transitive_sources) -+ if hasattr(py_info, 'imports'): -+ all_imports.append(py_info.imports) -+ -+ return [ -+ DefaultInfo(files = depset(py_outputs)), -+ PyInfo( -+ transitive_sources = depset(transitive = all_transitive_sources), -+ imports = depset(transitive = all_imports), -+ has_py2_only_sources = False, -+ has_py3_only_sources = True, -+ ), -+ ] -+ -+_tsl_py_proto_library_rule = rule( -+ implementation = _tsl_py_proto_library_impl, -+ attrs = { -+ "deps": attr.label_list( -+ providers = [[ProtoInfo], [PyInfo]], -+ ), -+ "_protoc": attr.label( -+ default = "@com_google_protobuf//:protoc", -+ executable = True, -+ cfg = "exec", -+ ), -+ }, -+ provides = [PyInfo], +diff --git a/tensorflow/core/BUILD b/tensorflow/core/BUILD +index 1234567..89abcdef 100644 +--- a/tensorflow/core/BUILD ++++ b/tensorflow/core/BUILD +@@ -64,5 +64,5 @@ +-load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library") +-load("@local_config_cuda//cuda:build_defs.bzl", "if_cuda") +-load("@local_config_tensorrt//:build_defs.bzl", "if_tensorrt") ++# load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library") ++# load("@local_config_cuda//cuda:build_defs.bzl", "if_cuda") ++# load("@local_config_tensorrt//:build_defs.bzl", "if_tensorrt") + load("@rules_python//python:proto.bzl", "py_proto_library") +@@ -208,5 +208,5 @@ +-java_proto_library( +- name = "example_java_proto", +- visibility = ["//visibility:public"], +- deps = [":example_protos"], +-) ++# java_proto_library( ++# name = "example_java_proto", ++# visibility = ["//visibility:public"], ++# deps = [":example_protos"], ++# ) +@@ -535,8 +535,5 @@ + "//conditions:default": [ + "//tensorflow/core/tpu/ops", + "//tensorflow/dtensor/cc:dtensor_tpu_ops", + ], +- }) + if_tensorrt([ +- "//tensorflow/compiler/tf2tensorrt:trt_engine_resource_ops_op_lib", +- "//tensorflow/compiler/tf2tensorrt:trt_op_libs", +- ]) + if_libtpu( ++ }) + if_libtpu( +@@ -657,11 +657,5 @@ + ]) + if_cuda_or_rocm([ + "//tensorflow/core/kernels:cudnn_rnn_kernels", +- ]) + if_cuda([ +- "//tensorflow/core/grappler/optimizers:gpu_swapping_kernels", +- "//tensorflow/core/grappler/optimizers:gpu_swapping_ops", + ]) + if_nccl([ + "//tensorflow/core/kernels:nccl_kernels", +- ]) + if_tensorrt([ +- "//tensorflow/compiler/tf2tensorrt:trt_engine_resource_op_kernels", +- "//tensorflow/compiler/tf2tensorrt:trt_op_kernels", + ]) + tf_tpu_dependencies() + tf_dtensor_tpu_dependencies(), +@@ -1745,5 +1745,3 @@ + "@xla//xla/tsl/util:command_line_flags", + "@xla//xla/tsl/util:device_name_utils", +- ] + if_cuda([ +- "@local_config_cuda//cuda:cudnn_header", +- ]) + if_static( ++ ] + if_static( +diff --git a/tensorflow/core/platform/build_config.default.bzl b/tensorflow/core/platform/build_config.default.bzl +index 1234567..89abcdef 100644 +--- a/tensorflow/core/platform/build_config.default.bzl ++++ b/tensorflow/core/platform/build_config.default.bzl +@@ -3,2 +3,2 @@ +-load("@local_config_cuda//cuda:build_defs.bzl", "if_cuda") +-load("@local_config_rocm//rocm:build_defs.bzl", "if_rocm") ++# load("@local_config_cuda//cuda:build_defs.bzl", "if_cuda") ++# load("@local_config_rocm//rocm:build_defs.bzl", "if_rocm") +@@ -31,6 +31,1 @@ +- ] + if_cuda([ +- Label("@xla//xla/stream_executor:cuda_platform"), +- ]) + if_rocm([ +- "@xla//xla/stream_executor:rocm_platform", +- "@local_config_rocm//rocm:rocm_rpath", +- ]) + if_mkl_ml([ ++ ] + if_mkl_ml([ +diff --git a/tensorflow/workspace2.bzl b/tensorflow/workspace2.bzl +index 1234567..89abcdef 100644 +--- a/tensorflow/workspace2.bzl ++++ b/tensorflow/workspace2.bzl +@@ -133,1 +133,1 @@ +- tensorrt_configure(name = "local_config_tensorrt") ++# tensorrt_configure(name = "local_config_tensorrt") +diff --git a/third_party/xla/xla/stream_executor/sycl/BUILD b/third_party/xla/xla/stream_executor/sycl/BUILD +index 1234567..89abcdef 100644 +--- a/third_party/xla/xla/stream_executor/sycl/BUILD ++++ b/third_party/xla/xla/stream_executor/sycl/BUILD +@@ -9,1 +9,2 @@ + load("//xla:xla.default.bzl", "xla_cc_test") ++load("@rules_proto//proto:defs.bzl", "proto_library") +@@ -114,5 +114,4 @@ +-tf_proto_library( +- name = "oneapi_compute_capability_proto", +- srcs = ["oneapi_compute_capability.proto"], +- make_default_target_header_only = True, +-) ++proto_library( ++ name = "oneapi_compute_capability_proto", ++ srcs = ["oneapi_compute_capability.proto"], +) -+ - # Re-defined protocol buffer rule to bring in the change introduced in commit - # https://github.com/google/protobuf/commit/294b5758c373cbab4b72f35f4cb62dc1d8332b68 - # which was not part of a stable protobuf release in 04/2018. -@@ -402,32 +487,19 @@ def py_proto_library( - genproto_deps = [] - for dep in deps: - if dep != "@com_google_protobuf//:protobuf_python": -- genproto_deps.append(dep + "_genproto") -- else: -- genproto_deps.append("@com_google_protobuf//:well_known_types_py_pb2_genproto") -+ genproto_deps.append(dep) - -- proto_gen( -+ native.proto_library( - name = name + "_genproto", - srcs = srcs, -- outs = outs, -- gen_py = 1, -- includes = includes, -- plugin = grpc_python_plugin, -- plugin_language = "grpc", -- protoc = protoc, -- visibility = ["//visibility:public"], - deps = genproto_deps, -+ visibility = ["//visibility:public"], - ) - -- if default_runtime and not default_runtime in py_libs + deps: -- py_libs = py_libs + [default_runtime] -- -- native.py_library( -+ # Use custom rule instead of removed native.py_proto_library -+ _tsl_py_proto_library_rule( - name = name, -- srcs = outs + py_extra_srcs, -- deps = py_libs + deps, -- imports = includes, -- **kwargs -+ deps = [":" + name + "_genproto"] + deps, - ) - - def tf_proto_library_cc( -@@ -467,11 +539,10 @@ def tf_proto_library_cc( - if not srcs: - # This is a collection of sub-libraries. Build header-only and impl - # libraries containing all the sources. -- proto_gen( -+ native.proto_library( - name = name + "_genproto", -- protoc = "@com_google_protobuf//:protoc", -- visibility = ["//visibility:public"], - deps = [s + "_genproto" for s in protolib_deps], -+ visibility = ["//visibility:public"], - ) - - native.alias( -@@ -538,11 +609,10 @@ def tf_proto_library_py( - if not srcs: - # This is a collection of sub-libraries. Build header-only and impl - # libraries containing all the sources. -- proto_gen( -+ native.proto_library( - name = py_name + "_genproto", -- protoc = "@com_google_protobuf//:protoc", -- visibility = ["//visibility:public"], - deps = [s + "_genproto" for s in py_deps], -+ visibility = ["//visibility:public"], - ) - native.py_library( - name = py_name, -diff --git a/third_party/xla/third_party/tsl/tsl/platform/prefetch.h b/third_party/xla/third_party/tsl/tsl/platform/prefetch.h -index d883529c6..05f3469a4 100644 ---- a/third_party/xla/third_party/tsl/tsl/platform/prefetch.h -+++ b/third_party/xla/third_party/tsl/tsl/platform/prefetch.h -@@ -16,7 +16,7 @@ limitations under the License. - #ifndef TENSORFLOW_TSL_PLATFORM_PREFETCH_H_ - #define TENSORFLOW_TSL_PLATFORM_PREFETCH_H_ - --#include "absl/base/prefetch.h" -+#include "absl_base_prefetch.h" - - namespace tsl { - namespace port { -diff --git a/third_party/xla/third_party/tsl/tsl/platform/status.h b/third_party/xla/third_party/tsl/tsl/platform/status.h -index 84954ff48..724ad934b 100644 ---- a/third_party/xla/third_party/tsl/tsl/platform/status.h -+++ b/third_party/xla/third_party/tsl/tsl/platform/status.h -@@ -126,7 +126,10 @@ const char* NullTerminatedMessage(const absl::Status& status); - #else - ABSL_DEPRECATE_AND_INLINE() - inline const char* NullTerminatedMessage(const absl::Status& status) { -- return absl::StatusMessageAsCStr(status); -+ // absl::StatusMessageAsCStr doesn't exist in older Abseil versions -+ // Inline implementation from newer Abseil -+ auto sv_message = status.message(); -+ return sv_message.empty() ? "" : sv_message.data(); - } - #endif - diff --git a/third_party/tf_wheel_version_suffix/BUILD b/third_party/tf_wheel_version_suffix/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/tf_wheel_version_suffix/WORKSPACE b/third_party/tf_wheel_version_suffix/WORKSPACE new file mode 100644 index 0000000..e69de29 diff --git a/third_party/tf_wheel_version_suffix/wheel_version_suffix.bzl b/third_party/tf_wheel_version_suffix/wheel_version_suffix.bzl new file mode 100644 index 0000000..29fd6a8 --- /dev/null +++ b/third_party/tf_wheel_version_suffix/wheel_version_suffix.bzl @@ -0,0 +1,2 @@ +SEMANTIC_WHEEL_VERSION_SUFFIX = "" +WHEEL_VERSION_SUFFIX = ""