1# TensorFlow external dependencies that can be loaded in WORKSPACE files.
2
3load("//third_party/gpus:cuda_configure.bzl", "cuda_configure")
4load("//third_party/gpus:rocm_configure.bzl", "rocm_configure")
5load("//third_party/tensorrt:tensorrt_configure.bzl", "tensorrt_configure")
6load("//third_party/nccl:nccl_configure.bzl", "nccl_configure")
7load("//third_party/git:git_configure.bzl", "git_configure")
8load("//third_party/py:python_configure.bzl", "python_configure")
9load("//third_party/systemlibs:syslibs_configure.bzl", "syslibs_configure")
10load("//third_party/toolchains/remote:configure.bzl", "remote_execution_configure")
11load("//third_party/toolchains/clang6:repo.bzl", "clang6_configure")
12load("//third_party/toolchains/cpus/arm:arm_compiler_configure.bzl", "arm_compiler_configure")
13load("//third_party/toolchains/embedded/arm-linux:arm_linux_toolchain_configure.bzl", "arm_linux_toolchain_configure")
14load("//third_party:repo.bzl", "tf_http_archive")
15load("//third_party/clang_toolchain:cc_configure_clang.bzl", "cc_download_clang_toolchain")
16load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
17load("@bazel_tools//tools/build_defs/repo:java.bzl", "java_import_external")
18load("@io_bazel_rules_closure//closure:defs.bzl", "filegroup_external")
19load(
20    "//tensorflow/tools/def_file_filter:def_file_filter_configure.bzl",
21    "def_file_filter_configure",
22)
23load("//third_party/FP16:workspace.bzl", FP16 = "repo")
24load("//third_party/aws:workspace.bzl", aws = "repo")
25load("//third_party/clog:workspace.bzl", clog = "repo")
26load("//third_party/cpuinfo:workspace.bzl", cpuinfo = "repo")
27load("//third_party/dlpack:workspace.bzl", dlpack = "repo")
28load("//third_party/flatbuffers:workspace.bzl", flatbuffers = "repo")
29load("//third_party/hexagon:workspace.bzl", hexagon_nn = "repo")
30load("//third_party/highwayhash:workspace.bzl", highwayhash = "repo")
31load("//third_party/hwloc:workspace.bzl", hwloc = "repo")
32load("//third_party/icu:workspace.bzl", icu = "repo")
33load("//third_party/jpeg:workspace.bzl", jpeg = "repo")
34load("//third_party/nasm:workspace.bzl", nasm = "repo")
35load("//third_party/opencl_headers:workspace.bzl", opencl_headers = "repo")
36load("//third_party/kissfft:workspace.bzl", kissfft = "repo")
37load("//third_party/pasta:workspace.bzl", pasta = "repo")
38load("//third_party/psimd:workspace.bzl", psimd = "repo")
39load("//third_party/ruy:workspace.bzl", ruy = "repo")
40load("//third_party/sobol_data:workspace.bzl", sobol_data = "repo")
41load("//third_party/vulkan_headers:workspace.bzl", vulkan_headers = "repo")
42load("@tf_toolchains//toolchains/remote_config:configs.bzl", "initialize_rbe_configs")
43
44def initialize_third_party():
45    """ Load third party repositories.  See above load() statements. """
46    FP16()
47    aws()
48    clog()
49    cpuinfo()
50    dlpack()
51    flatbuffers()
52    hexagon_nn()
53    highwayhash()
54    hwloc()
55    icu()
56    kissfft()
57    jpeg()
58    nasm()
59    opencl_headers()
60    pasta()
61    psimd()
62    sobol_data()
63    vulkan_headers()
64    ruy()
65
66# Sanitize a dependency so that it works correctly from code that includes
67# TensorFlow as a submodule.
68def clean_dep(dep):
69    return str(Label(dep))
70
71# If TensorFlow is linked as a submodule.
72# path_prefix and tf_repo_name are no longer used.
73def tf_workspace(path_prefix = "", tf_repo_name = ""):
74    tf_repositories(path_prefix, tf_repo_name)
75    tf_bind()
76
77# Toolchains & platforms required by Tensorflow to build.
78def tf_toolchains():
79    native.register_execution_platforms("@local_execution_config_platform//:platform")
80    native.register_toolchains("@local_execution_config_python//:py_toolchain")
81
82# Define all external repositories required by TensorFlow
83def tf_repositories(path_prefix = "", tf_repo_name = ""):
84    """All external dependencies for TF builds."""
85
86    # Initialize toolchains and platforms.
87    tf_toolchains()
88
89    # Loads all external repos to configure RBE builds.
90    initialize_rbe_configs()
91
92    # Note that we check the minimum bazel version in WORKSPACE.
93    clang6_configure(name = "local_config_clang6")
94    cc_download_clang_toolchain(name = "local_config_download_clang")
95    cuda_configure(name = "local_config_cuda")
96    tensorrt_configure(name = "local_config_tensorrt")
97    nccl_configure(name = "local_config_nccl")
98    git_configure(name = "local_config_git")
99    syslibs_configure(name = "local_config_syslibs")
100    python_configure(name = "local_config_python")
101    rocm_configure(name = "local_config_rocm")
102    remote_execution_configure(name = "local_config_remote_execution")
103
104    initialize_third_party()
105
106    # For windows bazel build
107    # TODO: Remove def file filter when TensorFlow can export symbols properly on Windows.
108    def_file_filter_configure(name = "local_config_def_file_filter")
109
110    # Point //external/local_config_arm_compiler to //external/arm_compiler
111    arm_compiler_configure(
112        name = "local_config_arm_compiler",
113        build_file = clean_dep("//third_party/toolchains/cpus/arm:BUILD"),
114        remote_config_repo_arm = "../arm_compiler",
115        remote_config_repo_aarch64 = "../aarch64_compiler",
116    )
117
118    # TFLite crossbuild toolchain for embeddeds Linux
119    arm_linux_toolchain_configure(
120        name = "local_config_embedded_arm",
121        build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:BUILD"),
122        aarch64_repo = "../aarch64_linux_toolchain",
123        armhf_repo = "../armhf_linux_toolchain",
124    )
125
126    if path_prefix:
127        print("path_prefix was specified to tf_workspace but is no longer used " +
128              "and will be removed in the future.")
129
130    # To update any of the dependencies bellow:
131    # a) update URL and strip_prefix to the new git commit hash
132    # b) get the sha256 hash of the commit by running:
133    #    curl -L <url> | sha256sum
134    # and update the sha256 with the result.
135    tf_http_archive(
136        name = "XNNPACK",
137        sha256 = "59ccf0c1c64899b511f8872a278e54c293970f57933b056492a364aa5ac709ec",
138        strip_prefix = "XNNPACK-094e692629d57ddb932fcc993193626f60daa61b",
139        urls = [
140            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/XNNPACK/archive/094e692629d57ddb932fcc993193626f60daa61b.zip",
141            "https://github.com/google/XNNPACK/archive/094e692629d57ddb932fcc993193626f60daa61b.zip",
142        ],
143    )
144
145    tf_http_archive(
146        name = "FXdiv",
147        sha256 = "3d7b0e9c4c658a84376a1086126be02f9b7f753caa95e009d9ac38d11da444db",
148        strip_prefix = "FXdiv-63058eff77e11aa15bf531df5dd34395ec3017c8",
149        urls = [
150            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip",
151            "https://github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip",
152        ],
153    )
154
155    tf_http_archive(
156        name = "pthreadpool",
157        sha256 = "e576de3e2504018462a3ee2282c99c2d0d708f01d17cd2f71f9f1fe6d3ba8b9b",
158        strip_prefix = "pthreadpool-77f9d3bcfabd1bdb910dd33b549d5290b968ef05",
159        urls = [
160            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/Maratyszcza/pthreadpool/archive/77f9d3bcfabd1bdb910dd33b549d5290b968ef05.zip",
161            "https://github.com/Maratyszcza/pthreadpool/archive/77f9d3bcfabd1bdb910dd33b549d5290b968ef05.zip",
162        ],
163    )
164
165    tf_http_archive(
166        name = "mkl_dnn",
167        build_file = clean_dep("//third_party/mkl_dnn:mkldnn.BUILD"),
168        sha256 = "a0211aeb5e7dad50b97fa5dffc1a2fe2fe732572d4164e1ee8750a2ede43fbec",
169        strip_prefix = "oneDNN-0.21.3",
170        urls = [
171            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/oneapi-src/oneDNN/archive/v0.21.3.tar.gz",
172            "https://github.com/oneapi-src/oneDNN/archive/v0.21.3.tar.gz",
173        ],
174    )
175
176    tf_http_archive(
177        name = "mkl_dnn_v1",
178        build_file = clean_dep("//third_party/mkl_dnn:mkldnn_v1.BUILD"),
179        sha256 = "5369f7b2f0b52b40890da50c0632c3a5d1082d98325d0f2bff125d19d0dcaa1d",
180        strip_prefix = "oneDNN-1.6.4",
181        urls = [
182            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/oneapi-src/oneDNN/archive/v1.6.4.tar.gz",
183            "https://github.com/oneapi-src/oneDNN/archive/v1.6.4.tar.gz",
184        ],
185    )
186
187    tf_http_archive(
188        name = "com_google_absl",
189        build_file = clean_dep("//third_party:com_google_absl.BUILD"),
190        # TODO: Remove the patch when https://github.com/abseil/abseil-cpp/issues/326 is resolved
191        # and when TensorFlow is build against CUDA 10.2
192        patch_file = clean_dep("//third_party:com_google_absl_fix_mac_and_nvcc_build.patch"),
193        sha256 = "f368a8476f4e2e0eccf8a7318b98dafbe30b2600f4e3cf52636e5eb145aba06a",  # SHARED_ABSL_SHA
194        strip_prefix = "abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d",
195        urls = [
196            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
197            "https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
198        ],
199    )
200
201    tf_http_archive(
202        name = "eigen_archive",
203        build_file = clean_dep("//third_party:eigen.BUILD"),
204        sha256 = "d76992f1972e4ff270221c7ee8125610a8e02bb46708a7295ee646e99287083b",  # SHARED_EIGEN_SHA
205        strip_prefix = "eigen-90ee821c563fa20db4d64d6991ddca256d5c52f2",
206        urls = [
207            "https://storage.googleapis.com/mirror.tensorflow.org/gitlab.com/libeigen/eigen/-/archive/90ee821c563fa20db4d64d6991ddca256d5c52f2/eigen-90ee821c563fa20db4d64d6991ddca256d5c52f2.tar.gz",
208            "https://gitlab.com/libeigen/eigen/-/archive/90ee821c563fa20db4d64d6991ddca256d5c52f2/eigen-90ee821c563fa20db4d64d6991ddca256d5c52f2.tar.gz",
209        ],
210    )
211
212    tf_http_archive(
213        name = "arm_compiler",
214        build_file = clean_dep("//:arm_compiler.BUILD"),
215        sha256 = "b9e7d50ffd9996ed18900d041d362c99473b382c0ae049b2fce3290632d2656f",
216        strip_prefix = "rpi-newer-crosstools-eb68350c5c8ec1663b7fe52c742ac4271e3217c5/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/",
217        urls = [
218            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/rvagg/rpi-newer-crosstools/archive/eb68350c5c8ec1663b7fe52c742ac4271e3217c5.tar.gz",
219            "https://github.com/rvagg/rpi-newer-crosstools/archive/eb68350c5c8ec1663b7fe52c742ac4271e3217c5.tar.gz",
220        ],
221    )
222
223    tf_http_archive(
224        # This is the latest `aarch64-none-linux-gnu` compiler provided by ARM
225        # See https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
226        # The archive contains GCC version 9.2.1
227        name = "aarch64_compiler",
228        build_file = "//:arm_compiler.BUILD",
229        sha256 = "8dfe681531f0bd04fb9c53cf3c0a3368c616aa85d48938eebe2b516376e06a66",
230        strip_prefix = "gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu",
231        urls = [
232            "https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz",
233            "https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz",
234        ],
235    )
236
237    tf_http_archive(
238        name = "aarch64_linux_toolchain",
239        build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:aarch64-linux-toolchain.BUILD"),
240        sha256 = "8ce3e7688a47d8cd2d8e8323f147104ae1c8139520eca50ccf8a7fa933002731",
241        strip_prefix = "gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu",
242        urls = [
243            "https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz",
244            "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz",
245        ],
246    )
247
248    tf_http_archive(
249        name = "armhf_linux_toolchain",
250        build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:armhf-linux-toolchain.BUILD"),
251        sha256 = "d4f6480ecaa99e977e3833cc8a8e1263f9eecd1ce2d022bb548a24c4f32670f5",
252        strip_prefix = "gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf",
253        urls = [
254            "https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz",
255            "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz",
256        ],
257    )
258
259    tf_http_archive(
260        name = "libxsmm_archive",
261        build_file = clean_dep("//third_party:libxsmm.BUILD"),
262        sha256 = "9c0af4509ea341d1ee2c6c19fc6f19289318c3bd4b17844efeb9e7f9691abf76",
263        strip_prefix = "libxsmm-1.14",
264        urls = [
265            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/hfp/libxsmm/archive/1.14.tar.gz",
266            "https://github.com/hfp/libxsmm/archive/1.14.tar.gz",
267        ],
268    )
269
270    tf_http_archive(
271        name = "com_googlesource_code_re2",
272        sha256 = "d070e2ffc5476c496a6a872a6f246bfddce8e7797d6ba605a7c8d72866743bf9",
273        strip_prefix = "re2-506cfa4bffd060c06ec338ce50ea3468daa6c814",
274        system_build_file = clean_dep("//third_party/systemlibs:re2.BUILD"),
275        urls = [
276            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz",
277            "https://github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz",
278        ],
279    )
280
281    tf_http_archive(
282        name = "com_github_google_crc32c",
283        sha256 = "6b3b1d861bb8307658b2407bc7a4c59e566855ef5368a60b35c893551e4788e9",
284        build_file = "@com_github_googlecloudplatform_google_cloud_cpp//bazel:crc32c.BUILD",
285        strip_prefix = "crc32c-1.0.6",
286        urls = [
287            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/crc32c/archive/1.0.6.tar.gz",
288            "https://github.com/google/crc32c/archive/1.0.6.tar.gz",
289        ],
290    )
291
292    tf_http_archive(
293        name = "com_github_googlecloudplatform_google_cloud_cpp",
294        sha256 = "ff82045b9491f0d880fc8e5c83fd9542eafb156dcac9ff8c6209ced66ed2a7f0",
295        strip_prefix = "google-cloud-cpp-1.17.1",
296        repo_mapping = {
297            "@com_github_curl_curl": "@curl",
298            "@com_github_nlohmann_json": "@nlohmann_json_lib",
299        },
300        system_build_file = clean_dep("//third_party/systemlibs:google_cloud_cpp.BUILD"),
301        system_link_files = {
302            "//third_party/systemlibs:google_cloud_cpp.google.cloud.bigtable.BUILD": "google/cloud/bigtable/BUILD",
303        },
304        urls = [
305            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/googleapis/google-cloud-cpp/archive/v1.17.1.tar.gz",
306            "https://github.com/googleapis/google-cloud-cpp/archive/v1.17.1.tar.gz",
307        ],
308    )
309
310    tf_http_archive(
311        name = "com_github_googlecloudplatform_tensorflow_gcp_tools",
312        sha256 = "5e9ebe17eaa2895eb7f77fefbf52deeda7c4b63f5a616916b823eb74f3a0c542",
313        strip_prefix = "tensorflow-gcp-tools-2643d8caeba6ca2a6a0b46bb123953cb95b7e7d5",
314        urls = [
315            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/GoogleCloudPlatform/tensorflow-gcp-tools/archive/2643d8caeba6ca2a6a0b46bb123953cb95b7e7d5.tar.gz",
316            "https://github.com/GoogleCloudPlatform/tensorflow-gcp-tools/archive/2643d8caeba6ca2a6a0b46bb123953cb95b7e7d5.tar.gz",
317        ],
318    )
319
320    tf_http_archive(
321        name = "com_google_googleapis",
322        build_file = clean_dep("//third_party/googleapis:googleapis.BUILD"),
323        sha256 = "7ebab01b06c555f4b6514453dc3e1667f810ef91d1d4d2d3aa29bb9fcb40a900",
324        strip_prefix = "googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f",
325        urls = [
326            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip",
327            "https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip",
328        ],
329    )
330
331    tf_http_archive(
332        name = "gemmlowp",
333        sha256 = "43146e6f56cb5218a8caaab6b5d1601a083f1f31c06ff474a4378a7d35be9cfb",  # SHARED_GEMMLOWP_SHA
334        strip_prefix = "gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745",
335        urls = [
336            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip",
337            "https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip",
338        ],
339    )
340
341    tf_http_archive(
342        name = "farmhash_archive",
343        build_file = clean_dep("//third_party:farmhash.BUILD"),
344        sha256 = "6560547c63e4af82b0f202cb710ceabb3f21347a4b996db565a411da5b17aba0",  # SHARED_FARMHASH_SHA
345        strip_prefix = "farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45",
346        urls = [
347            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz",
348            "https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz",
349        ],
350    )
351
352    tf_http_archive(
353        name = "png",
354        build_file = clean_dep("//third_party:png.BUILD"),
355        patch_file = clean_dep("//third_party:png_fix_rpi.patch"),
356        sha256 = "ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307",
357        strip_prefix = "libpng-1.6.37",
358        system_build_file = clean_dep("//third_party/systemlibs:png.BUILD"),
359        urls = [
360            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/glennrp/libpng/archive/v1.6.37.tar.gz",
361            "https://github.com/glennrp/libpng/archive/v1.6.37.tar.gz",
362        ],
363    )
364
365    tf_http_archive(
366        name = "org_sqlite",
367        build_file = clean_dep("//third_party:sqlite.BUILD"),
368        sha256 = "e0b1c0345fe4338b936e17da8e1bd88366cd210e576834546977f040c12a8f68",
369        strip_prefix = "sqlite-amalgamation-3340100",
370        system_build_file = clean_dep("//third_party/systemlibs:sqlite.BUILD"),
371        urls = [
372            "https://storage.googleapis.com/mirror.tensorflow.org/www.sqlite.org/2021/sqlite-amalgamation-3340100.zip",
373            "https://www.sqlite.org/2021/sqlite-amalgamation-3340100.zip",
374        ],
375    )
376
377    tf_http_archive(
378        name = "gif",
379        build_file = clean_dep("//third_party:gif.BUILD"),
380        patch_file = clean_dep("//third_party:gif_fix_strtok_r.patch"),
381        sha256 = "31da5562f44c5f15d63340a09a4fd62b48c45620cd302f77a6d9acf0077879bd",
382        strip_prefix = "giflib-5.2.1",
383        system_build_file = clean_dep("//third_party/systemlibs:gif.BUILD"),
384        urls = [
385            "https://storage.googleapis.com/mirror.tensorflow.org/pilotfiber.dl.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz",
386            "https://pilotfiber.dl.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz",
387        ],
388    )
389
390    tf_http_archive(
391        name = "six_archive",
392        build_file = clean_dep("//third_party:six.BUILD"),
393        sha256 = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
394        strip_prefix = "six-1.15.0",
395        system_build_file = clean_dep("//third_party/systemlibs:six.BUILD"),
396        urls = [
397            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/source/s/six/six-1.15.0.tar.gz",
398            "https://pypi.python.org/packages/source/s/six/six-1.15.0.tar.gz",
399        ],
400    )
401
402    tf_http_archive(
403        name = "astor_archive",
404        build_file = clean_dep("//third_party:astor.BUILD"),
405        sha256 = "95c30d87a6c2cf89aa628b87398466840f0ad8652f88eb173125a6df8533fb8d",
406        strip_prefix = "astor-0.7.1",
407        system_build_file = clean_dep("//third_party/systemlibs:astor.BUILD"),
408        urls = [
409            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/99/80/f9482277c919d28bebd85813c0a70117214149a96b08981b72b63240b84c/astor-0.7.1.tar.gz",
410            "https://pypi.python.org/packages/99/80/f9482277c919d28bebd85813c0a70117214149a96b08981b72b63240b84c/astor-0.7.1.tar.gz",
411        ],
412    )
413
414    tf_http_archive(
415        name = "astunparse_archive",
416        build_file = clean_dep("//third_party:astunparse.BUILD"),
417        sha256 = "5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872",
418        strip_prefix = "astunparse-1.6.3/lib",
419        system_build_file = clean_dep("//third_party/systemlibs:astunparse.BUILD"),
420        urls = [
421            "https://storage.googleapis.com/mirror.tensorflow.org/files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz",
422            "https://files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz",
423        ],
424    )
425
426    filegroup_external(
427        name = "astunparse_license",
428        licenses = ["notice"],  # PSFL
429        sha256_urls = {
430            "92fc0e4f4fa9460558eedf3412b988d433a2dcbb3a9c45402a145a4fab8a6ac6": [
431                "https://storage.googleapis.com/mirror.tensorflow.org/raw.githubusercontent.com/simonpercivall/astunparse/v1.6.2/LICENSE",
432                "https://raw.githubusercontent.com/simonpercivall/astunparse/v1.6.2/LICENSE",
433            ],
434        },
435    )
436
437    tf_http_archive(
438        name = "functools32_archive",
439        build_file = clean_dep("//third_party:functools32.BUILD"),
440        sha256 = "f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d",
441        strip_prefix = "functools32-3.2.3-2",
442        system_build_file = clean_dep("//third_party/systemlibs:functools32.BUILD"),
443        urls = [
444            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz",
445            "https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz",
446        ],
447    )
448
449    tf_http_archive(
450        name = "gast_archive",
451        build_file = clean_dep("//third_party:gast.BUILD"),
452        sha256 = "40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1",
453        strip_prefix = "gast-0.4.0",
454        system_build_file = clean_dep("//third_party/systemlibs:gast.BUILD"),
455        urls = [
456            "http://mirror.tensorflow.org/files.pythonhosted.org/packages/12/59/eaa15ab9710a20e22225efd042cd2d6a0b559a0656d5baba9641a2a4a921/gast-0.4.0.tar.gz",
457            "https://files.pythonhosted.org/packages/83/4a/07c7e59cef23fb147454663c3271c21da68ba2ab141427c20548ae5a8a4d/gast-0.4.0.tar.gz",
458        ],
459    )
460
461    tf_http_archive(
462        name = "termcolor_archive",
463        build_file = clean_dep("//third_party:termcolor.BUILD"),
464        sha256 = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b",
465        strip_prefix = "termcolor-1.1.0",
466        system_build_file = clean_dep("//third_party/systemlibs:termcolor.BUILD"),
467        urls = [
468            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz",
469            "https://pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz",
470        ],
471    )
472
473    tf_http_archive(
474        name = "typing_extensions_archive",
475        build_file = clean_dep("//third_party:typing_extensions.BUILD"),
476        sha256 = "79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae",
477        strip_prefix = "typing_extensions-3.7.4.2/src_py3",
478        system_build_file = clean_dep("//third_party/systemlibs:typing_extensions.BUILD"),
479        urls = [
480            "http://mirror.tensorflow.org/files.pythonhosted.org/packages/6a/28/d32852f2af6b5ead85d396249d5bdf450833f3a69896d76eb480d9c5e406/typing_extensions-3.7.4.2.tar.gz",
481            "https://files.pythonhosted.org/packages/6a/28/d32852f2af6b5ead85d396249d5bdf450833f3a69896d76eb480d9c5e406/typing_extensions-3.7.4.2.tar.gz",
482        ],
483    )
484
485    filegroup_external(
486        name = "typing_extensions_license",
487        licenses = ["notice"],  # PSFL
488        sha256_urls = {
489            "ff17ce94e102024deb68773eb1cc74ca76da4e658f373531f0ac22d68a6bb1ad": [
490                "http://mirror.tensorflow.org/raw.githubusercontent.com/python/typing/master/typing_extensions/LICENSE",
491                "https://raw.githubusercontent.com/python/typing/master/typing_extensions/LICENSE",
492            ],
493        },
494    )
495
496    tf_http_archive(
497        name = "opt_einsum_archive",
498        build_file = clean_dep("//third_party:opt_einsum.BUILD"),
499        sha256 = "d3d464b4da7ef09e444c30e4003a27def37f85ff10ff2671e5f7d7813adac35b",
500        strip_prefix = "opt_einsum-2.3.2",
501        system_build_file = clean_dep("//third_party/systemlibs:opt_einsum.BUILD"),
502        urls = [
503            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/f6/d6/44792ec668bcda7d91913c75237314e688f70415ab2acd7172c845f0b24f/opt_einsum-2.3.2.tar.gz",
504            "https://pypi.python.org/packages/f6/d6/44792ec668bcda7d91913c75237314e688f70415ab2acd7172c845f0b24f/opt_einsum-2.3.2.tar.gz",
505        ],
506    )
507
508    tf_http_archive(
509        name = "absl_py",
510        sha256 = "603febc9b95a8f2979a7bdb77d2f5e4d9b30d4e0d59579f88eba67d4e4cc5462",
511        strip_prefix = "abseil-py-pypi-v0.9.0",
512        system_build_file = clean_dep("//third_party/systemlibs:absl_py.BUILD"),
513        system_link_files = {
514            "//third_party/systemlibs:absl_py.absl.BUILD": "absl/BUILD",
515            "//third_party/systemlibs:absl_py.absl.flags.BUILD": "absl/flags/BUILD",
516            "//third_party/systemlibs:absl_py.absl.testing.BUILD": "absl/testing/BUILD",
517            "//third_party/systemlibs:absl_py.absl.logging.BUILD": "absl/logging/BUILD",
518        },
519        urls = [
520            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/abseil/abseil-py/archive/pypi-v0.9.0.tar.gz",
521            "https://github.com/abseil/abseil-py/archive/pypi-v0.9.0.tar.gz",
522        ],
523    )
524
525    tf_http_archive(
526        name = "enum34_archive",
527        urls = [
528            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz",
529            "https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz",
530        ],
531        sha256 = "8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
532        build_file = clean_dep("//third_party:enum34.BUILD"),
533        system_build_file = clean_dep("//third_party/systemlibs:enum34.BUILD"),
534        strip_prefix = "enum34-1.1.6/enum",
535    )
536
537    tf_http_archive(
538        name = "org_python_pypi_backports_weakref",
539        build_file = clean_dep("//third_party:backports_weakref.BUILD"),
540        sha256 = "8813bf712a66b3d8b85dc289e1104ed220f1878cf981e2fe756dfaabe9a82892",
541        strip_prefix = "backports.weakref-1.0rc1/src",
542        urls = [
543            "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz",
544            "https://pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz",
545        ],
546    )
547
548    tf_http_archive(
549        name = "dill_archive",
550        build_file = clean_dep("//third_party:dill.BUILD"),
551        system_build_file = clean_dep("//third_party/systemlibs:dill.BUILD"),
552        urls = [
553            "http://mirror.tensorflow.org/files.pythonhosted.org/packages/e2/96/518a8ea959a734b70d2e95fef98bcbfdc7adad1c1e5f5dd9148c835205a5/dill-0.3.2.zip",
554            "https://files.pythonhosted.org/packages/e2/96/518a8ea959a734b70d2e95fef98bcbfdc7adad1c1e5f5dd9148c835205a5/dill-0.3.2.zip",
555        ],
556        sha256 = "6e12da0d8e49c220e8d6e97ee8882002e624f1160289ce85ec2cc0a5246b3a2e",
557        strip_prefix = "dill-0.3.2",
558    )
559
560    tf_http_archive(
561        name = "tblib_archive",
562        build_file = clean_dep("//third_party:tblib.BUILD"),
563        system_build_file = clean_dep("//third_party/systemlibs:tblib.BUILD"),
564        urls = [
565            "http://mirror.tensorflow.org/files.pythonhosted.org/packages/d3/41/901ef2e81d7b1e834b9870d416cb09479e175a2be1c4aa1a9dcd0a555293/tblib-1.7.0.tar.gz",
566            "https://files.pythonhosted.org/packages/d3/41/901ef2e81d7b1e834b9870d416cb09479e175a2be1c4aa1a9dcd0a555293/tblib-1.7.0.tar.gz",
567        ],
568        sha256 = "059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c",
569        strip_prefix = "tblib-1.7.0",
570    )
571
572    filegroup_external(
573        name = "org_python_license",
574        licenses = ["notice"],  # Python 2.0
575        sha256_urls = {
576            "e76cacdf0bdd265ff074ccca03671c33126f597f39d0ed97bc3e5673d9170cf6": [
577                "https://storage.googleapis.com/mirror.tensorflow.org/docs.python.org/2.7/_sources/license.rst.txt",
578                "https://docs.python.org/2.7/_sources/license.rst.txt",
579            ],
580        },
581    )
582
583    tf_http_archive(
584        name = "com_google_protobuf",
585        patch_file = clean_dep("//third_party/protobuf:protobuf.patch"),
586        sha256 = "cfcba2df10feec52a84208693937c17a4b5df7775e1635c1e3baffc487b24c9b",
587        strip_prefix = "protobuf-3.9.2",
588        system_build_file = clean_dep("//third_party/systemlibs:protobuf.BUILD"),
589        system_link_files = {
590            "//third_party/systemlibs:protobuf.bzl": "protobuf.bzl",
591        },
592        urls = [
593            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/protocolbuffers/protobuf/archive/v3.9.2.zip",
594            "https://github.com/protocolbuffers/protobuf/archive/v3.9.2.zip",
595        ],
596    )
597
598    tf_http_archive(
599        name = "nsync",
600        sha256 = "caf32e6b3d478b78cff6c2ba009c3400f8251f646804bcb65465666a9cea93c4",
601        strip_prefix = "nsync-1.22.0",
602        system_build_file = clean_dep("//third_party/systemlibs:nsync.BUILD"),
603        urls = [
604            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/nsync/archive/1.22.0.tar.gz",
605            "https://github.com/google/nsync/archive/1.22.0.tar.gz",
606        ],
607    )
608
609    tf_http_archive(
610        name = "com_google_googletest",
611        sha256 = "ff7a82736e158c077e76188232eac77913a15dac0b22508c390ab3f88e6d6d86",
612        strip_prefix = "googletest-b6cd405286ed8635ece71c72f118e659f4ade3fb",
613        urls = [
614            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/googletest/archive/b6cd405286ed8635ece71c72f118e659f4ade3fb.zip",
615            "https://github.com/google/googletest/archive/b6cd405286ed8635ece71c72f118e659f4ade3fb.zip",
616        ],
617    )
618
619    tf_http_archive(
620        name = "com_github_gflags_gflags",
621        sha256 = "ae27cdbcd6a2f935baa78e4f21f675649271634c092b1be01469440495609d0e",
622        strip_prefix = "gflags-2.2.1",
623        urls = [
624            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/gflags/gflags/archive/v2.2.1.tar.gz",
625            "https://github.com/gflags/gflags/archive/v2.2.1.tar.gz",
626        ],
627    )
628
629    tf_http_archive(
630        name = "pcre",
631        build_file = clean_dep("//third_party:pcre.BUILD"),
632        sha256 = "aecafd4af3bd0f3935721af77b889d9024b2e01d96b58471bd91a3063fb47728",
633        strip_prefix = "pcre-8.44",
634        system_build_file = clean_dep("//third_party/systemlibs:pcre.BUILD"),
635        urls = [
636            "https://storage.googleapis.com/mirror.tensorflow.org/ftp.exim.org/pub/pcre/pcre-8.44.tar.gz",
637            "https://ftp.exim.org/pub/pcre/pcre-8.44.tar.gz",
638        ],
639    )
640
641    tf_http_archive(
642        name = "curl",
643        build_file = clean_dep("//third_party:curl.BUILD"),
644        sha256 = "01ae0c123dee45b01bbaef94c0bc00ed2aec89cb2ee0fd598e0d302a6b5e0a98",
645        strip_prefix = "curl-7.69.1",
646        system_build_file = clean_dep("//third_party/systemlibs:curl.BUILD"),
647        urls = [
648            "https://storage.googleapis.com/mirror.tensorflow.org/curl.haxx.se/download/curl-7.69.1.tar.gz",
649            "https://curl.haxx.se/download/curl-7.69.1.tar.gz",
650        ],
651    )
652
653    # WARNING: make sure ncteisen@ and vpai@ are cc-ed on any CL to change the below rule
654    tf_http_archive(
655        name = "com_github_grpc_grpc",
656        sha256 = "b956598d8cbe168b5ee717b5dafa56563eb5201a947856a6688bbeac9cac4e1f",
657        strip_prefix = "grpc-b54a5b338637f92bfcf4b0bc05e0f57a5fd8fadd",
658        system_build_file = clean_dep("//third_party/systemlibs:grpc.BUILD"),
659        patch_file = clean_dep("//third_party/grpc:generate_cc_env_fix.patch"),
660        system_link_files = {
661            "//third_party/systemlibs:BUILD": "bazel/BUILD",
662            "//third_party/systemlibs:grpc.BUILD": "src/compiler/BUILD",
663            "//third_party/systemlibs:grpc.bazel.grpc_deps.bzl": "bazel/grpc_deps.bzl",
664            "//third_party/systemlibs:grpc.bazel.grpc_extra_deps.bzl": "bazel/grpc_extra_deps.bzl",
665            "//third_party/systemlibs:grpc.bazel.cc_grpc_library.bzl": "bazel/cc_grpc_library.bzl",
666            "//third_party/systemlibs:grpc.bazel.generate_cc.bzl": "bazel/generate_cc.bzl",
667            "//third_party/systemlibs:grpc.bazel.protobuf.bzl": "bazel/protobuf.bzl",
668        },
669        urls = [
670            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/grpc/grpc/archive/b54a5b338637f92bfcf4b0bc05e0f57a5fd8fadd.tar.gz",
671            "https://github.com/grpc/grpc/archive/b54a5b338637f92bfcf4b0bc05e0f57a5fd8fadd.tar.gz",
672        ],
673    )
674
675    tf_http_archive(
676        name = "linenoise",
677        build_file = clean_dep("//third_party:linenoise.BUILD"),
678        sha256 = "7f51f45887a3d31b4ce4fa5965210a5e64637ceac12720cfce7954d6a2e812f7",
679        strip_prefix = "linenoise-c894b9e59f02203dbe4e2be657572cf88c4230c3",
680        urls = [
681            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/antirez/linenoise/archive/c894b9e59f02203dbe4e2be657572cf88c4230c3.tar.gz",
682            "https://github.com/antirez/linenoise/archive/c894b9e59f02203dbe4e2be657572cf88c4230c3.tar.gz",
683        ],
684    )
685
686    # Check out LLVM and MLIR from llvm-project.
687    LLVM_COMMIT = "624fccba87cc7cc5af523f7efb10a0d82118ecd5"
688    LLVM_SHA256 = "71531ad9b85450f521cb8d4f6750b6008d35473d61a91695b2fc6333e76f91ee"
689    LLVM_URLS = [
690        "https://storage.googleapis.com/mirror.tensorflow.org/github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT),
691        "https://github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT),
692    ]
693    tf_http_archive(
694        name = "llvm-project",
695        sha256 = LLVM_SHA256,
696        strip_prefix = "llvm-project-" + LLVM_COMMIT,
697        urls = LLVM_URLS,
698        additional_build_files = {
699            clean_dep("//third_party/llvm:llvm.autogenerated.BUILD"): "llvm/BUILD",
700            "//third_party/mlir:BUILD": "mlir/BUILD",
701            "//third_party/mlir:test.BUILD": "mlir/test/BUILD",
702        },
703    )
704
705    # Intel openMP that is part of LLVM sources.
706    tf_http_archive(
707        name = "llvm_openmp",
708        build_file = clean_dep("//third_party/llvm_openmp:BUILD"),
709        sha256 = "d19f728c8e04fb1e94566c8d76aef50ec926cd2f95ef3bf1e0a5de4909b28b44",
710        strip_prefix = "openmp-10.0.1.src",
711        urls = [
712            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/openmp-10.0.1.src.tar.xz",
713            "https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/openmp-10.0.1.src.tar.xz",
714        ],
715    )
716
717    tf_http_archive(
718        name = "lmdb",
719        build_file = clean_dep("//third_party:lmdb.BUILD"),
720        sha256 = "f3927859882eb608868c8c31586bb7eb84562a40a6bf5cc3e13b6b564641ea28",
721        strip_prefix = "lmdb-LMDB_0.9.22/libraries/liblmdb",
722        system_build_file = clean_dep("//third_party/systemlibs:lmdb.BUILD"),
723        urls = [
724            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/LMDB/lmdb/archive/LMDB_0.9.22.tar.gz",
725            "https://github.com/LMDB/lmdb/archive/LMDB_0.9.22.tar.gz",
726        ],
727    )
728
729    tf_http_archive(
730        name = "jsoncpp_git",
731        build_file = clean_dep("//third_party:jsoncpp.BUILD"),
732        sha256 = "77a402fb577b2e0e5d0bdc1cf9c65278915cdb25171e3452c68b6da8a561f8f0",
733        strip_prefix = "jsoncpp-1.9.2",
734        system_build_file = clean_dep("//third_party/systemlibs:jsoncpp.BUILD"),
735        urls = [
736            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/open-source-parsers/jsoncpp/archive/1.9.2.tar.gz",
737            "https://github.com/open-source-parsers/jsoncpp/archive/1.9.2.tar.gz",
738        ],
739    )
740
741    tf_http_archive(
742        name = "boringssl",
743        sha256 = "a9c3b03657d507975a32732f04563132b4553c20747cec6dc04de475c8bdf29f",
744        strip_prefix = "boringssl-80ca9f9f6ece29ab132cce4cf807a9465a18cfac",
745        system_build_file = clean_dep("//third_party/systemlibs:boringssl.BUILD"),
746        urls = [
747            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/boringssl/archive/80ca9f9f6ece29ab132cce4cf807a9465a18cfac.tar.gz",
748            "https://github.com/google/boringssl/archive/80ca9f9f6ece29ab132cce4cf807a9465a18cfac.tar.gz",
749        ],
750    )
751
752    tf_http_archive(
753        name = "zlib",
754        build_file = clean_dep("//third_party:zlib.BUILD"),
755        sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
756        strip_prefix = "zlib-1.2.11",
757        system_build_file = clean_dep("//third_party/systemlibs:zlib.BUILD"),
758        urls = [
759            "https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.11.tar.gz",
760            "https://zlib.net/zlib-1.2.11.tar.gz",
761        ],
762    )
763
764    tf_http_archive(
765        name = "fft2d",
766        build_file = clean_dep("//third_party/fft2d:fft2d.BUILD"),
767        sha256 = "5f4dabc2ae21e1f537425d58a49cdca1c49ea11db0d6271e2a4b27e9697548eb",
768        strip_prefix = "OouraFFT-1.0",
769        urls = [
770            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/petewarden/OouraFFT/archive/v1.0.tar.gz",
771            "https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz",
772        ],
773    )
774
775    tf_http_archive(
776        name = "snappy",
777        build_file = clean_dep("//third_party:snappy.BUILD"),
778        sha256 = "16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f",
779        strip_prefix = "snappy-1.1.8",
780        system_build_file = clean_dep("//third_party/systemlibs:snappy.BUILD"),
781        urls = [
782            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/snappy/archive/1.1.8.tar.gz",
783            "https://github.com/google/snappy/archive/1.1.8.tar.gz",
784        ],
785    )
786
787    tf_http_archive(
788        name = "nccl_archive",
789        build_file = clean_dep("//third_party:nccl/archive.BUILD"),
790        patch_file = clean_dep("//third_party/nccl:archive.patch"),
791        sha256 = "3ae89ddb2956fff081e406a94ff54ae5e52359f5d645ce977c7eba09b3b782e6",
792        strip_prefix = "nccl-2.8.3-1",
793        urls = [
794            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/nvidia/nccl/archive/v2.8.3-1.tar.gz",
795            "https://github.com/nvidia/nccl/archive/v2.8.3-1.tar.gz",
796        ],
797    )
798
799    java_import_external(
800        name = "junit",
801        jar_sha256 = "59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a",
802        jar_urls = [
803            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/junit/junit/4.12/junit-4.12.jar",
804            "https://repo1.maven.org/maven2/junit/junit/4.12/junit-4.12.jar",
805            "https://maven.ibiblio.org/maven2/junit/junit/4.12/junit-4.12.jar",
806        ],
807        licenses = ["reciprocal"],  # Common Public License Version 1.0
808        testonly_ = True,
809        deps = ["@org_hamcrest_core"],
810    )
811
812    java_import_external(
813        name = "org_hamcrest_core",
814        jar_sha256 = "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
815        jar_urls = [
816            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
817            "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
818            "https://maven.ibiblio.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
819        ],
820        licenses = ["notice"],  # New BSD License
821        testonly_ = True,
822    )
823
824    java_import_external(
825        name = "com_google_testing_compile",
826        jar_sha256 = "edc180fdcd9f740240da1a7a45673f46f59c5578d8cd3fbc912161f74b5aebb8",
827        jar_urls = [
828            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/com/google/testing/compile/compile-testing/0.11/compile-testing-0.11.jar",
829            "https://repo1.maven.org/maven2/com/google/testing/compile/compile-testing/0.11/compile-testing-0.11.jar",
830        ],
831        licenses = ["notice"],  # New BSD License
832        testonly_ = True,
833        deps = ["@com_google_guava", "@com_google_truth"],
834    )
835
836    java_import_external(
837        name = "com_google_truth",
838        jar_sha256 = "032eddc69652b0a1f8d458f999b4a9534965c646b8b5de0eba48ee69407051df",
839        jar_urls = [
840            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/com/google/truth/truth/0.32/truth-0.32.jar",
841            "https://repo1.maven.org/maven2/com/google/truth/truth/0.32/truth-0.32.jar",
842        ],
843        licenses = ["notice"],  # Apache 2.0
844        testonly_ = True,
845        deps = ["@com_google_guava"],
846    )
847
848    java_import_external(
849        name = "org_checkerframework_qual",
850        jar_sha256 = "d261fde25d590f6b69db7721d469ac1b0a19a17ccaaaa751c31f0d8b8260b894",
851        jar_urls = [
852            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/org/checkerframework/checker-qual/2.10.0/checker-qual-2.10.0.jar",
853            "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/2.10.0/checker-qual-2.10.0.jar",
854        ],
855        licenses = ["notice"],  # Apache 2.0
856    )
857
858    java_import_external(
859        name = "com_squareup_javapoet",
860        jar_sha256 = "5bb5abdfe4366c15c0da3332c57d484e238bd48260d6f9d6acf2b08fdde1efea",
861        jar_urls = [
862            "https://storage.googleapis.com/mirror.tensorflow.org/repo1.maven.org/maven2/com/squareup/javapoet/1.9.0/javapoet-1.9.0.jar",
863            "https://repo1.maven.org/maven2/com/squareup/javapoet/1.9.0/javapoet-1.9.0.jar",
864        ],
865        licenses = ["notice"],  # Apache 2.0
866    )
867
868    tf_http_archive(
869        name = "com_google_pprof",
870        build_file = clean_dep("//third_party:pprof.BUILD"),
871        sha256 = "e0928ca4aa10ea1e0551e2d7ce4d1d7ea2d84b2abbdef082b0da84268791d0c4",
872        strip_prefix = "pprof-c0fb62ec88c411cc91194465e54db2632845b650",
873        urls = [
874            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/pprof/archive/c0fb62ec88c411cc91194465e54db2632845b650.tar.gz",
875            "https://github.com/google/pprof/archive/c0fb62ec88c411cc91194465e54db2632845b650.tar.gz",
876        ],
877    )
878
879    # The CUDA 11 toolkit ships with CUB.  We should be able to delete this rule
880    # once TF drops support for CUDA 10.
881    tf_http_archive(
882        name = "cub_archive",
883        build_file = clean_dep("//third_party:cub.BUILD"),
884        sha256 = "162514b3cc264ac89d91898b58450190b8192e2af1142cf8ccac2d59aa160dda",
885        strip_prefix = "cub-1.9.9",
886        urls = [
887            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/NVlabs/cub/archive/1.9.9.zip",
888            "https://github.com/NVlabs/cub/archive/1.9.9.zip",
889        ],
890    )
891
892    tf_http_archive(
893        name = "cython",
894        build_file = clean_dep("//third_party:cython.BUILD"),
895        delete = ["BUILD.bazel"],
896        sha256 = "e2e38e1f0572ca54d6085df3dec8b607d20e81515fb80215aed19c81e8fe2079",
897        strip_prefix = "cython-0.29.21",
898        system_build_file = clean_dep("//third_party/systemlibs:cython.BUILD"),
899        urls = [
900            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/cython/cython/archive/0.29.21.tar.gz",
901            "https://github.com/cython/cython/archive/0.29.21.tar.gz",
902        ],
903    )
904
905    tf_http_archive(
906        name = "arm_neon_2_x86_sse",
907        build_file = clean_dep("//third_party:arm_neon_2_x86_sse.BUILD"),
908        sha256 = "213733991310b904b11b053ac224fee2d4e0179e46b52fe7f8735b8831e04dcc",
909        strip_prefix = "ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f",
910        urls = [
911            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz",
912            "https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz",
913        ],
914    )
915
916    tf_http_archive(
917        name = "double_conversion",
918        build_file = clean_dep("//third_party:double_conversion.BUILD"),
919        sha256 = "2f7fbffac0d98d201ad0586f686034371a6d152ca67508ab611adc2386ad30de",
920        strip_prefix = "double-conversion-3992066a95b823efc8ccc1baf82a1cfc73f6e9b8",
921        system_build_file = clean_dep("//third_party/systemlibs:double_conversion.BUILD"),
922        urls = [
923            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/double-conversion/archive/3992066a95b823efc8ccc1baf82a1cfc73f6e9b8.zip",
924            "https://github.com/google/double-conversion/archive/3992066a95b823efc8ccc1baf82a1cfc73f6e9b8.zip",
925        ],
926    )
927
928    tf_http_archive(
929        name = "tflite_mobilenet_float",
930        build_file = clean_dep("//third_party:tflite_mobilenet_float.BUILD"),
931        sha256 = "2fadeabb9968ec6833bee903900dda6e61b3947200535874ce2fe42a8493abc0",
932        urls = [
933            "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz",
934            "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz",
935        ],
936    )
937
938    tf_http_archive(
939        name = "tflite_mobilenet_quant",
940        build_file = clean_dep("//third_party:tflite_mobilenet_quant.BUILD"),
941        sha256 = "d32432d28673a936b2d6281ab0600c71cf7226dfe4cdcef3012555f691744166",
942        urls = [
943            "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz",
944            "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz",
945        ],
946    )
947
948    tf_http_archive(
949        name = "tflite_mobilenet_ssd",
950        build_file = str(Label("//third_party:tflite_mobilenet.BUILD")),
951        sha256 = "767057f2837a46d97882734b03428e8dd640b93236052b312b2f0e45613c1cf0",
952        urls = [
953            "https://storage.googleapis.com/mirror.tensorflow.org/storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_ssd_tflite_v1.zip",
954            "https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_ssd_tflite_v1.zip",
955        ],
956    )
957
958    tf_http_archive(
959        name = "tflite_mobilenet_ssd_quant",
960        build_file = str(Label("//third_party:tflite_mobilenet.BUILD")),
961        sha256 = "a809cd290b4d6a2e8a9d5dad076e0bd695b8091974e0eed1052b480b2f21b6dc",
962        urls = [
963            "https://storage.googleapis.com/mirror.tensorflow.org/storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_0.75_quant_2018_06_29.zip",
964            "https://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_0.75_quant_2018_06_29.zip",
965        ],
966    )
967
968    tf_http_archive(
969        name = "tflite_mobilenet_ssd_quant_protobuf",
970        build_file = str(Label("//third_party:tflite_mobilenet.BUILD")),
971        sha256 = "09280972c5777f1aa775ef67cb4ac5d5ed21970acd8535aeca62450ef14f0d79",
972        strip_prefix = "ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18",
973        urls = [
974            "https://storage.googleapis.com/mirror.tensorflow.org/storage.googleapis.com/download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tar.gz",
975            "https://storage.googleapis.com/download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tar.gz",
976        ],
977    )
978
979    tf_http_archive(
980        name = "tflite_conv_actions_frozen",
981        build_file = str(Label("//third_party:tflite_mobilenet.BUILD")),
982        sha256 = "d947b38cba389b5e2d0bfc3ea6cc49c784e187b41a071387b3742d1acac7691e",
983        urls = [
984            "https://storage.googleapis.com/mirror.tensorflow.org/storage.googleapis.com/download.tensorflow.org/models/tflite/conv_actions_tflite.zip",
985            "https://storage.googleapis.com/download.tensorflow.org/models/tflite/conv_actions_tflite.zip",
986        ],
987    )
988
989    tf_http_archive(
990        name = "tflite_ovic_testdata",
991        build_file = clean_dep("//third_party:tflite_ovic_testdata.BUILD"),
992        sha256 = "033c941b7829b05ca55a124a26a6a0581b1ececc154a2153cafcfdb54f80dca2",
993        strip_prefix = "ovic",
994        urls = [
995            "https://storage.googleapis.com/mirror.tensorflow.org/storage.googleapis.com/download.tensorflow.org/data/ovic_2019_04_30.zip",
996            "https://storage.googleapis.com/download.tensorflow.org/data/ovic_2019_04_30.zip",
997        ],
998    )
999
1000    tf_http_archive(
1001        name = "rules_cc",
1002        sha256 = "cf3b76a90c86c0554c5b10f4b160f05af71d252026b71362c4674e2fb9936cf9",
1003        strip_prefix = "rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371",
1004        urls = [
1005            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip",
1006            "https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip",
1007        ],
1008    )
1009
1010    tf_http_archive(
1011        name = "rules_python",
1012        sha256 = "aa96a691d3a8177f3215b14b0edc9641787abaaa30363a080165d06ab65e1161",
1013        urls = [
1014            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_python/releases/download/0.0.1/rules_python-0.0.1.tar.gz",
1015            "https://github.com/bazelbuild/rules_python/releases/download/0.0.1/rules_python-0.0.1.tar.gz",
1016        ],
1017    )
1018
1019    tf_http_archive(
1020        name = "build_bazel_rules_android",
1021        sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
1022        strip_prefix = "rules_android-0.1.1",
1023        urls = [
1024            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_android/archive/v0.1.1.zip",
1025            "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip",
1026        ],
1027    )
1028
1029    # Apple and Swift rules.
1030    # https://github.com/bazelbuild/rules_apple/releases
1031    tf_http_archive(
1032        name = "build_bazel_rules_apple",
1033        sha256 = "ee9e6073aeb5a65c100cb9c44b0017c937706a4ae03176e14a7e78620a198079",
1034        strip_prefix = "rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b",
1035        urls = [
1036            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz",
1037            "https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz",
1038        ],
1039    )
1040
1041    # https://github.com/bazelbuild/rules_swift/releases
1042    tf_http_archive(
1043        name = "build_bazel_rules_swift",
1044        sha256 = "d0833bc6dad817a367936a5f902a0c11318160b5e80a20ece35fb85a5675c886",
1045        strip_prefix = "rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8",
1046        urls = [
1047            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz",
1048            "https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz",
1049        ],
1050    )
1051
1052    # https://github.com/bazelbuild/apple_support/releases
1053    tf_http_archive(
1054        name = "build_bazel_apple_support",
1055        sha256 = "ad8ae80e93612b8151019367a3d1604d7a51c14480dae1254e10252007e8260c",
1056        strip_prefix = "apple_support-501b4afb27745c4813a88ffa28acd901408014e4",
1057        urls = [
1058            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz",
1059            "https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz",
1060        ],
1061    )
1062
1063    # https://github.com/bazelbuild/bazel-skylib/releases
1064    tf_http_archive(
1065        name = "bazel_skylib",
1066        sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
1067        urls = [
1068            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
1069            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
1070        ],
1071    )
1072
1073    # https://github.com/apple/swift-protobuf/releases
1074    tf_http_archive(
1075        name = "com_github_apple_swift_swift_protobuf",
1076        strip_prefix = "swift-protobuf-1.6.0/",
1077        sha256 = "4ccf6e5ea558e8287bf6331f9f6e52b3c321fca5f1d181d03680f415c32a6bba",
1078        urls = [
1079            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/apple/swift-protobuf/archive/1.6.0.zip",
1080            "https://github.com/apple/swift-protobuf/archive/1.6.0.zip",
1081        ],
1082    )
1083
1084    # https://github.com/google/xctestrunner/releases
1085    http_file(
1086        name = "xctestrunner",
1087        executable = 1,
1088        urls = [
1089            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/xctestrunner/releases/download/0.2.9/ios_test_runner.par",
1090            "https://github.com/google/xctestrunner/releases/download/0.2.9/ios_test_runner.par",
1091        ],
1092    )
1093
1094    tf_http_archive(
1095        name = "nlohmann_json_lib",
1096        build_file = clean_dep("//third_party:nlohmann_json.BUILD"),
1097        sha256 = "c377963a95989270c943d522bfefe7b889ef5ed0e1e15d535fd6f6f16ed70732",
1098        strip_prefix = "json-3.4.0",
1099        urls = [
1100            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/nlohmann/json/archive/v3.4.0.tar.gz",
1101            "https://github.com/nlohmann/json/archive/v3.4.0.tar.gz",
1102        ],
1103    )
1104
1105    tf_http_archive(
1106        name = "pybind11",
1107        urls = [
1108            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/pybind/pybind11/archive/v2.6.0.tar.gz",
1109            "https://github.com/pybind/pybind11/archive/v2.6.0.tar.gz",
1110        ],
1111        sha256 = "90b705137b69ee3b5fc655eaca66d0dc9862ea1759226f7ccd3098425ae69571",
1112        strip_prefix = "pybind11-2.6.0",
1113        build_file = clean_dep("//third_party:pybind11.BUILD"),
1114        system_build_file = clean_dep("//third_party/systemlibs:pybind11.BUILD"),
1115    )
1116
1117    tf_http_archive(
1118        name = "wrapt",
1119        build_file = clean_dep("//third_party:wrapt.BUILD"),
1120        sha256 = "8a6fb40e8f8b6a66b4ba81a4044c68e6a7b1782f21cfabc06fb765332b4c3e51",
1121        strip_prefix = "wrapt-1.11.1/src/wrapt",
1122        system_build_file = clean_dep("//third_party/systemlibs:wrapt.BUILD"),
1123        urls = [
1124            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/GrahamDumpleton/wrapt/archive/1.11.1.tar.gz",
1125            "https://github.com/GrahamDumpleton/wrapt/archive/1.11.1.tar.gz",
1126        ],
1127    )
1128    tf_http_archive(
1129        name = "coremltools",
1130        sha256 = "0d594a714e8a5fd5bd740ad112ef59155c0482e25fdc8f8efa5758f90abdcf1e",
1131        strip_prefix = "coremltools-3.3",
1132        build_file = clean_dep("//third_party:coremltools.BUILD"),
1133        urls = [
1134            "http://mirror.tensorflow.org/github.com/apple/coremltools/archive/3.3.zip",
1135            "https://github.com/apple/coremltools/archive/3.3.zip",
1136        ],
1137    )
1138
1139def tf_bind():
1140    """Bind targets for some external repositories"""
1141    ##############################################################################
1142    # BIND DEFINITIONS
1143    #
1144    # Please do not add bind() definitions unless we have no other choice.
1145    # If that ends up being the case, please leave a comment explaining
1146    # why we can't depend on the canonical build target.
1147
1148    # Needed by Protobuf
1149    native.bind(
1150        name = "grpc_cpp_plugin",
1151        actual = "@com_github_grpc_grpc//src/compiler:grpc_cpp_plugin",
1152    )
1153    native.bind(
1154        name = "grpc_python_plugin",
1155        actual = "@com_github_grpc_grpc//src/compiler:grpc_python_plugin",
1156    )
1157
1158    native.bind(
1159        name = "grpc_lib",
1160        actual = "@com_github_grpc_grpc//:grpc++",
1161    )
1162
1163    native.bind(
1164        name = "grpc_lib_unsecure",
1165        actual = "@com_github_grpc_grpc//:grpc++_unsecure",
1166    )
1167
1168    # Needed by Protobuf
1169    native.bind(
1170        name = "python_headers",
1171        actual = clean_dep("//third_party/python_runtime:headers"),
1172    )
1173
1174    # Needed by Protobuf
1175    native.bind(
1176        name = "six",
1177        actual = "@six_archive//:six",
1178    )
1179