Make tf_http_archive() consistently take string attributes and create a label from it early in the rule.

That way, we do not need to use clean_dep anymore in workspace.bzl, which is easy to forget.

PiperOrigin-RevId: 358860040
Change-Id: Ia21a1c6fc19b386103b8ff3f153fef7352ef8ab2
This commit is contained in:
Christian Sigg 2021-02-22 11:11:42 -08:00 committed by TensorFlower Gardener
parent 0bb52df110
commit 6b350fcde9
4 changed files with 153 additions and 145 deletions

View File

@ -110,7 +110,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
# Point //external/local_config_arm_compiler to //external/arm_compiler
arm_compiler_configure(
name = "local_config_arm_compiler",
build_file = clean_dep("//third_party/toolchains/cpus/arm:BUILD"),
build_file = "//third_party/toolchains/cpus/arm:BUILD",
remote_config_repo_arm = "../arm_compiler",
remote_config_repo_aarch64 = "../aarch64_compiler",
)
@ -118,7 +118,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
# TFLite crossbuild toolchain for embeddeds Linux
arm_linux_toolchain_configure(
name = "local_config_embedded_arm",
build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:BUILD"),
build_file = "//third_party/toolchains/embedded/arm-linux:BUILD",
aarch64_repo = "../aarch64_linux_toolchain",
armhf_repo = "../armhf_linux_toolchain",
)
@ -164,7 +164,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "mkl_dnn",
build_file = clean_dep("//third_party/mkl_dnn:mkldnn.BUILD"),
build_file = "//third_party/mkl_dnn:mkldnn.BUILD",
sha256 = "a0211aeb5e7dad50b97fa5dffc1a2fe2fe732572d4164e1ee8750a2ede43fbec",
strip_prefix = "oneDNN-0.21.3",
urls = [
@ -175,7 +175,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "mkl_dnn_v1",
build_file = clean_dep("//third_party/mkl_dnn:mkldnn_v1.BUILD"),
build_file = "//third_party/mkl_dnn:mkldnn_v1.BUILD",
sha256 = "5369f7b2f0b52b40890da50c0632c3a5d1082d98325d0f2bff125d19d0dcaa1d",
strip_prefix = "oneDNN-1.6.4",
urls = [
@ -186,10 +186,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "com_google_absl",
build_file = clean_dep("//third_party:com_google_absl.BUILD"),
build_file = "//third_party:com_google_absl.BUILD",
# TODO: Remove the patch when https://github.com/abseil/abseil-cpp/issues/326 is resolved
# and when TensorFlow is build against CUDA 10.2
patch_file = clean_dep("//third_party:com_google_absl_fix_mac_and_nvcc_build.patch"),
patch_file = "//third_party:com_google_absl_fix_mac_and_nvcc_build.patch",
sha256 = "f368a8476f4e2e0eccf8a7318b98dafbe30b2600f4e3cf52636e5eb145aba06a", # SHARED_ABSL_SHA
strip_prefix = "abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d",
urls = [
@ -200,7 +200,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "eigen_archive",
build_file = clean_dep("//third_party:eigen.BUILD"),
build_file = "//third_party:eigen.BUILD",
sha256 = "d76992f1972e4ff270221c7ee8125610a8e02bb46708a7295ee646e99287083b", # SHARED_EIGEN_SHA
strip_prefix = "eigen-90ee821c563fa20db4d64d6991ddca256d5c52f2",
urls = [
@ -211,7 +211,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "arm_compiler",
build_file = clean_dep("//:arm_compiler.BUILD"),
build_file = "//:arm_compiler.BUILD",
sha256 = "b9e7d50ffd9996ed18900d041d362c99473b382c0ae049b2fce3290632d2656f",
strip_prefix = "rpi-newer-crosstools-eb68350c5c8ec1663b7fe52c742ac4271e3217c5/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/",
urls = [
@ -236,7 +236,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "aarch64_linux_toolchain",
build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:aarch64-linux-toolchain.BUILD"),
build_file = "//third_party/toolchains/embedded/arm-linux:aarch64-linux-toolchain.BUILD",
sha256 = "8ce3e7688a47d8cd2d8e8323f147104ae1c8139520eca50ccf8a7fa933002731",
strip_prefix = "gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu",
urls = [
@ -247,7 +247,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "armhf_linux_toolchain",
build_file = clean_dep("//third_party/toolchains/embedded/arm-linux:armhf-linux-toolchain.BUILD"),
build_file = "//third_party/toolchains/embedded/arm-linux:armhf-linux-toolchain.BUILD",
sha256 = "d4f6480ecaa99e977e3833cc8a8e1263f9eecd1ce2d022bb548a24c4f32670f5",
strip_prefix = "gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf",
urls = [
@ -258,7 +258,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "libxsmm_archive",
build_file = clean_dep("//third_party:libxsmm.BUILD"),
build_file = "//third_party:libxsmm.BUILD",
sha256 = "9c0af4509ea341d1ee2c6c19fc6f19289318c3bd4b17844efeb9e7f9691abf76",
strip_prefix = "libxsmm-1.14",
urls = [
@ -271,7 +271,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "com_googlesource_code_re2",
sha256 = "d070e2ffc5476c496a6a872a6f246bfddce8e7797d6ba605a7c8d72866743bf9",
strip_prefix = "re2-506cfa4bffd060c06ec338ce50ea3468daa6c814",
system_build_file = clean_dep("//third_party/systemlibs:re2.BUILD"),
system_build_file = "//third_party/systemlibs:re2.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz",
"https://github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz",
@ -297,7 +297,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
"@com_github_curl_curl": "@curl",
"@com_github_nlohmann_json": "@nlohmann_json_lib",
},
system_build_file = clean_dep("//third_party/systemlibs:google_cloud_cpp.BUILD"),
system_build_file = "//third_party/systemlibs:google_cloud_cpp.BUILD",
system_link_files = {
"//third_party/systemlibs:google_cloud_cpp.google.cloud.bigtable.BUILD": "google/cloud/bigtable/BUILD",
},
@ -319,7 +319,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "com_google_googleapis",
build_file = clean_dep("//third_party/googleapis:googleapis.BUILD"),
build_file = "//third_party/googleapis:googleapis.BUILD",
sha256 = "7ebab01b06c555f4b6514453dc3e1667f810ef91d1d4d2d3aa29bb9fcb40a900",
strip_prefix = "googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f",
urls = [
@ -340,7 +340,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "farmhash_archive",
build_file = clean_dep("//third_party:farmhash.BUILD"),
build_file = "//third_party:farmhash.BUILD",
sha256 = "6560547c63e4af82b0f202cb710ceabb3f21347a4b996db565a411da5b17aba0", # SHARED_FARMHASH_SHA
strip_prefix = "farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45",
urls = [
@ -351,11 +351,11 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "png",
build_file = clean_dep("//third_party:png.BUILD"),
patch_file = clean_dep("//third_party:png_fix_rpi.patch"),
build_file = "//third_party:png.BUILD",
patch_file = "//third_party:png_fix_rpi.patch",
sha256 = "ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307",
strip_prefix = "libpng-1.6.37",
system_build_file = clean_dep("//third_party/systemlibs:png.BUILD"),
system_build_file = "//third_party/systemlibs:png.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/glennrp/libpng/archive/v1.6.37.tar.gz",
"https://github.com/glennrp/libpng/archive/v1.6.37.tar.gz",
@ -364,10 +364,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "org_sqlite",
build_file = clean_dep("//third_party:sqlite.BUILD"),
build_file = "//third_party:sqlite.BUILD",
sha256 = "e0b1c0345fe4338b936e17da8e1bd88366cd210e576834546977f040c12a8f68",
strip_prefix = "sqlite-amalgamation-3340100",
system_build_file = clean_dep("//third_party/systemlibs:sqlite.BUILD"),
system_build_file = "//third_party/systemlibs:sqlite.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/www.sqlite.org/2021/sqlite-amalgamation-3340100.zip",
"https://www.sqlite.org/2021/sqlite-amalgamation-3340100.zip",
@ -376,11 +376,11 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "gif",
build_file = clean_dep("//third_party:gif.BUILD"),
patch_file = clean_dep("//third_party:gif_fix_strtok_r.patch"),
build_file = "//third_party:gif.BUILD",
patch_file = "//third_party:gif_fix_strtok_r.patch",
sha256 = "31da5562f44c5f15d63340a09a4fd62b48c45620cd302f77a6d9acf0077879bd",
strip_prefix = "giflib-5.2.1",
system_build_file = clean_dep("//third_party/systemlibs:gif.BUILD"),
system_build_file = "//third_party/systemlibs:gif.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pilotfiber.dl.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz",
"https://pilotfiber.dl.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz",
@ -389,10 +389,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "six_archive",
build_file = clean_dep("//third_party:six.BUILD"),
build_file = "//third_party:six.BUILD",
sha256 = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
strip_prefix = "six-1.15.0",
system_build_file = clean_dep("//third_party/systemlibs:six.BUILD"),
system_build_file = "//third_party/systemlibs:six.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/source/s/six/six-1.15.0.tar.gz",
"https://pypi.python.org/packages/source/s/six/six-1.15.0.tar.gz",
@ -401,10 +401,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "astor_archive",
build_file = clean_dep("//third_party:astor.BUILD"),
build_file = "//third_party:astor.BUILD",
sha256 = "95c30d87a6c2cf89aa628b87398466840f0ad8652f88eb173125a6df8533fb8d",
strip_prefix = "astor-0.7.1",
system_build_file = clean_dep("//third_party/systemlibs:astor.BUILD"),
system_build_file = "//third_party/systemlibs:astor.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/99/80/f9482277c919d28bebd85813c0a70117214149a96b08981b72b63240b84c/astor-0.7.1.tar.gz",
"https://pypi.python.org/packages/99/80/f9482277c919d28bebd85813c0a70117214149a96b08981b72b63240b84c/astor-0.7.1.tar.gz",
@ -413,10 +413,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "astunparse_archive",
build_file = clean_dep("//third_party:astunparse.BUILD"),
build_file = "//third_party:astunparse.BUILD",
sha256 = "5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872",
strip_prefix = "astunparse-1.6.3/lib",
system_build_file = clean_dep("//third_party/systemlibs:astunparse.BUILD"),
system_build_file = "//third_party/systemlibs:astunparse.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz",
"https://files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz",
@ -436,10 +436,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "functools32_archive",
build_file = clean_dep("//third_party:functools32.BUILD"),
build_file = "//third_party:functools32.BUILD",
sha256 = "f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d",
strip_prefix = "functools32-3.2.3-2",
system_build_file = clean_dep("//third_party/systemlibs:functools32.BUILD"),
system_build_file = "//third_party/systemlibs:functools32.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz",
"https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz",
@ -448,10 +448,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "gast_archive",
build_file = clean_dep("//third_party:gast.BUILD"),
build_file = "//third_party:gast.BUILD",
sha256 = "40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1",
strip_prefix = "gast-0.4.0",
system_build_file = clean_dep("//third_party/systemlibs:gast.BUILD"),
system_build_file = "//third_party/systemlibs:gast.BUILD",
urls = [
"http://mirror.tensorflow.org/files.pythonhosted.org/packages/12/59/eaa15ab9710a20e22225efd042cd2d6a0b559a0656d5baba9641a2a4a921/gast-0.4.0.tar.gz",
"https://files.pythonhosted.org/packages/83/4a/07c7e59cef23fb147454663c3271c21da68ba2ab141427c20548ae5a8a4d/gast-0.4.0.tar.gz",
@ -460,10 +460,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "termcolor_archive",
build_file = clean_dep("//third_party:termcolor.BUILD"),
build_file = "//third_party:termcolor.BUILD",
sha256 = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b",
strip_prefix = "termcolor-1.1.0",
system_build_file = clean_dep("//third_party/systemlibs:termcolor.BUILD"),
system_build_file = "//third_party/systemlibs:termcolor.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz",
"https://pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz",
@ -472,10 +472,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "typing_extensions_archive",
build_file = clean_dep("//third_party:typing_extensions.BUILD"),
build_file = "//third_party:typing_extensions.BUILD",
sha256 = "79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae",
strip_prefix = "typing_extensions-3.7.4.2/src_py3",
system_build_file = clean_dep("//third_party/systemlibs:typing_extensions.BUILD"),
system_build_file = "//third_party/systemlibs:typing_extensions.BUILD",
urls = [
"http://mirror.tensorflow.org/files.pythonhosted.org/packages/6a/28/d32852f2af6b5ead85d396249d5bdf450833f3a69896d76eb480d9c5e406/typing_extensions-3.7.4.2.tar.gz",
"https://files.pythonhosted.org/packages/6a/28/d32852f2af6b5ead85d396249d5bdf450833f3a69896d76eb480d9c5e406/typing_extensions-3.7.4.2.tar.gz",
@ -495,10 +495,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "opt_einsum_archive",
build_file = clean_dep("//third_party:opt_einsum.BUILD"),
build_file = "//third_party:opt_einsum.BUILD",
sha256 = "d3d464b4da7ef09e444c30e4003a27def37f85ff10ff2671e5f7d7813adac35b",
strip_prefix = "opt_einsum-2.3.2",
system_build_file = clean_dep("//third_party/systemlibs:opt_einsum.BUILD"),
system_build_file = "//third_party/systemlibs:opt_einsum.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/f6/d6/44792ec668bcda7d91913c75237314e688f70415ab2acd7172c845f0b24f/opt_einsum-2.3.2.tar.gz",
"https://pypi.python.org/packages/f6/d6/44792ec668bcda7d91913c75237314e688f70415ab2acd7172c845f0b24f/opt_einsum-2.3.2.tar.gz",
@ -509,7 +509,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "absl_py",
sha256 = "603febc9b95a8f2979a7bdb77d2f5e4d9b30d4e0d59579f88eba67d4e4cc5462",
strip_prefix = "abseil-py-pypi-v0.9.0",
system_build_file = clean_dep("//third_party/systemlibs:absl_py.BUILD"),
system_build_file = "//third_party/systemlibs:absl_py.BUILD",
system_link_files = {
"//third_party/systemlibs:absl_py.absl.BUILD": "absl/BUILD",
"//third_party/systemlibs:absl_py.absl.flags.BUILD": "absl/flags/BUILD",
@ -529,14 +529,14 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
"https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz",
],
sha256 = "8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
build_file = clean_dep("//third_party:enum34.BUILD"),
system_build_file = clean_dep("//third_party/systemlibs:enum34.BUILD"),
build_file = "//third_party:enum34.BUILD",
system_build_file = "//third_party/systemlibs:enum34.BUILD",
strip_prefix = "enum34-1.1.6/enum",
)
tf_http_archive(
name = "org_python_pypi_backports_weakref",
build_file = clean_dep("//third_party:backports_weakref.BUILD"),
build_file = "//third_party:backports_weakref.BUILD",
sha256 = "8813bf712a66b3d8b85dc289e1104ed220f1878cf981e2fe756dfaabe9a82892",
strip_prefix = "backports.weakref-1.0rc1/src",
urls = [
@ -547,8 +547,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "dill_archive",
build_file = clean_dep("//third_party:dill.BUILD"),
system_build_file = clean_dep("//third_party/systemlibs:dill.BUILD"),
build_file = "//third_party:dill.BUILD",
system_build_file = "//third_party/systemlibs:dill.BUILD",
urls = [
"http://mirror.tensorflow.org/files.pythonhosted.org/packages/e2/96/518a8ea959a734b70d2e95fef98bcbfdc7adad1c1e5f5dd9148c835205a5/dill-0.3.2.zip",
"https://files.pythonhosted.org/packages/e2/96/518a8ea959a734b70d2e95fef98bcbfdc7adad1c1e5f5dd9148c835205a5/dill-0.3.2.zip",
@ -559,8 +559,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "tblib_archive",
build_file = clean_dep("//third_party:tblib.BUILD"),
system_build_file = clean_dep("//third_party/systemlibs:tblib.BUILD"),
build_file = "//third_party:tblib.BUILD",
system_build_file = "//third_party/systemlibs:tblib.BUILD",
urls = [
"http://mirror.tensorflow.org/files.pythonhosted.org/packages/d3/41/901ef2e81d7b1e834b9870d416cb09479e175a2be1c4aa1a9dcd0a555293/tblib-1.7.0.tar.gz",
"https://files.pythonhosted.org/packages/d3/41/901ef2e81d7b1e834b9870d416cb09479e175a2be1c4aa1a9dcd0a555293/tblib-1.7.0.tar.gz",
@ -582,10 +582,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "com_google_protobuf",
patch_file = clean_dep("//third_party/protobuf:protobuf.patch"),
patch_file = "//third_party/protobuf:protobuf.patch",
sha256 = "cfcba2df10feec52a84208693937c17a4b5df7775e1635c1e3baffc487b24c9b",
strip_prefix = "protobuf-3.9.2",
system_build_file = clean_dep("//third_party/systemlibs:protobuf.BUILD"),
system_build_file = "//third_party/systemlibs:protobuf.BUILD",
system_link_files = {
"//third_party/systemlibs:protobuf.bzl": "protobuf.bzl",
},
@ -599,7 +599,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "nsync",
sha256 = "caf32e6b3d478b78cff6c2ba009c3400f8251f646804bcb65465666a9cea93c4",
strip_prefix = "nsync-1.22.0",
system_build_file = clean_dep("//third_party/systemlibs:nsync.BUILD"),
system_build_file = "//third_party/systemlibs:nsync.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/nsync/archive/1.22.0.tar.gz",
"https://github.com/google/nsync/archive/1.22.0.tar.gz",
@ -628,10 +628,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "pcre",
build_file = clean_dep("//third_party:pcre.BUILD"),
build_file = "//third_party:pcre.BUILD",
sha256 = "aecafd4af3bd0f3935721af77b889d9024b2e01d96b58471bd91a3063fb47728",
strip_prefix = "pcre-8.44",
system_build_file = clean_dep("//third_party/systemlibs:pcre.BUILD"),
system_build_file = "//third_party/systemlibs:pcre.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/ftp.exim.org/pub/pcre/pcre-8.44.tar.gz",
"https://ftp.exim.org/pub/pcre/pcre-8.44.tar.gz",
@ -640,10 +640,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "curl",
build_file = clean_dep("//third_party:curl.BUILD"),
build_file = "//third_party:curl.BUILD",
sha256 = "01ae0c123dee45b01bbaef94c0bc00ed2aec89cb2ee0fd598e0d302a6b5e0a98",
strip_prefix = "curl-7.69.1",
system_build_file = clean_dep("//third_party/systemlibs:curl.BUILD"),
system_build_file = "//third_party/systemlibs:curl.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/curl.haxx.se/download/curl-7.69.1.tar.gz",
"https://curl.haxx.se/download/curl-7.69.1.tar.gz",
@ -655,8 +655,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "com_github_grpc_grpc",
sha256 = "b956598d8cbe168b5ee717b5dafa56563eb5201a947856a6688bbeac9cac4e1f",
strip_prefix = "grpc-b54a5b338637f92bfcf4b0bc05e0f57a5fd8fadd",
system_build_file = clean_dep("//third_party/systemlibs:grpc.BUILD"),
patch_file = clean_dep("//third_party/grpc:generate_cc_env_fix.patch"),
system_build_file = "//third_party/systemlibs:grpc.BUILD",
patch_file = "//third_party/grpc:generate_cc_env_fix.patch",
system_link_files = {
"//third_party/systemlibs:BUILD": "bazel/BUILD",
"//third_party/systemlibs:grpc.BUILD": "src/compiler/BUILD",
@ -674,7 +674,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "linenoise",
build_file = clean_dep("//third_party:linenoise.BUILD"),
build_file = "//third_party:linenoise.BUILD",
sha256 = "7f51f45887a3d31b4ce4fa5965210a5e64637ceac12720cfce7954d6a2e812f7",
strip_prefix = "linenoise-c894b9e59f02203dbe4e2be657572cf88c4230c3",
urls = [
@ -696,7 +696,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
strip_prefix = "llvm-project-" + LLVM_COMMIT,
urls = LLVM_URLS,
additional_build_files = {
clean_dep("//third_party/llvm:llvm.autogenerated.BUILD"): "llvm/BUILD",
"//third_party/llvm:llvm.autogenerated.BUILD": "llvm/BUILD",
"//third_party/mlir:BUILD": "mlir/BUILD",
"//third_party/mlir:test.BUILD": "mlir/test/BUILD",
},
@ -705,7 +705,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
# Intel openMP that is part of LLVM sources.
tf_http_archive(
name = "llvm_openmp",
build_file = clean_dep("//third_party/llvm_openmp:BUILD"),
build_file = "//third_party/llvm_openmp:BUILD",
sha256 = "d19f728c8e04fb1e94566c8d76aef50ec926cd2f95ef3bf1e0a5de4909b28b44",
strip_prefix = "openmp-10.0.1.src",
urls = [
@ -716,10 +716,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "lmdb",
build_file = clean_dep("//third_party:lmdb.BUILD"),
build_file = "//third_party:lmdb.BUILD",
sha256 = "f3927859882eb608868c8c31586bb7eb84562a40a6bf5cc3e13b6b564641ea28",
strip_prefix = "lmdb-LMDB_0.9.22/libraries/liblmdb",
system_build_file = clean_dep("//third_party/systemlibs:lmdb.BUILD"),
system_build_file = "//third_party/systemlibs:lmdb.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/LMDB/lmdb/archive/LMDB_0.9.22.tar.gz",
"https://github.com/LMDB/lmdb/archive/LMDB_0.9.22.tar.gz",
@ -728,10 +728,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "jsoncpp_git",
build_file = clean_dep("//third_party:jsoncpp.BUILD"),
build_file = "//third_party:jsoncpp.BUILD",
sha256 = "77a402fb577b2e0e5d0bdc1cf9c65278915cdb25171e3452c68b6da8a561f8f0",
strip_prefix = "jsoncpp-1.9.2",
system_build_file = clean_dep("//third_party/systemlibs:jsoncpp.BUILD"),
system_build_file = "//third_party/systemlibs:jsoncpp.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/open-source-parsers/jsoncpp/archive/1.9.2.tar.gz",
"https://github.com/open-source-parsers/jsoncpp/archive/1.9.2.tar.gz",
@ -742,7 +742,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "boringssl",
sha256 = "a9c3b03657d507975a32732f04563132b4553c20747cec6dc04de475c8bdf29f",
strip_prefix = "boringssl-80ca9f9f6ece29ab132cce4cf807a9465a18cfac",
system_build_file = clean_dep("//third_party/systemlibs:boringssl.BUILD"),
system_build_file = "//third_party/systemlibs:boringssl.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/boringssl/archive/80ca9f9f6ece29ab132cce4cf807a9465a18cfac.tar.gz",
"https://github.com/google/boringssl/archive/80ca9f9f6ece29ab132cce4cf807a9465a18cfac.tar.gz",
@ -751,10 +751,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "zlib",
build_file = clean_dep("//third_party:zlib.BUILD"),
build_file = "//third_party:zlib.BUILD",
sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
strip_prefix = "zlib-1.2.11",
system_build_file = clean_dep("//third_party/systemlibs:zlib.BUILD"),
system_build_file = "//third_party/systemlibs:zlib.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.11.tar.gz",
"https://zlib.net/zlib-1.2.11.tar.gz",
@ -763,7 +763,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "fft2d",
build_file = clean_dep("//third_party/fft2d:fft2d.BUILD"),
build_file = "//third_party/fft2d:fft2d.BUILD",
sha256 = "5f4dabc2ae21e1f537425d58a49cdca1c49ea11db0d6271e2a4b27e9697548eb",
strip_prefix = "OouraFFT-1.0",
urls = [
@ -774,10 +774,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "snappy",
build_file = clean_dep("//third_party:snappy.BUILD"),
build_file = "//third_party:snappy.BUILD",
sha256 = "16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f",
strip_prefix = "snappy-1.1.8",
system_build_file = clean_dep("//third_party/systemlibs:snappy.BUILD"),
system_build_file = "//third_party/systemlibs:snappy.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/snappy/archive/1.1.8.tar.gz",
"https://github.com/google/snappy/archive/1.1.8.tar.gz",
@ -786,8 +786,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "nccl_archive",
build_file = clean_dep("//third_party:nccl/archive.BUILD"),
patch_file = clean_dep("//third_party/nccl:archive.patch"),
build_file = "//third_party:nccl/archive.BUILD",
patch_file = "//third_party/nccl:archive.patch",
sha256 = "3ae89ddb2956fff081e406a94ff54ae5e52359f5d645ce977c7eba09b3b782e6",
strip_prefix = "nccl-2.8.3-1",
urls = [
@ -867,7 +867,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "com_google_pprof",
build_file = clean_dep("//third_party:pprof.BUILD"),
build_file = "//third_party:pprof.BUILD",
sha256 = "e0928ca4aa10ea1e0551e2d7ce4d1d7ea2d84b2abbdef082b0da84268791d0c4",
strip_prefix = "pprof-c0fb62ec88c411cc91194465e54db2632845b650",
urls = [
@ -880,7 +880,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
# once TF drops support for CUDA 10.
tf_http_archive(
name = "cub_archive",
build_file = clean_dep("//third_party:cub.BUILD"),
build_file = "//third_party:cub.BUILD",
sha256 = "162514b3cc264ac89d91898b58450190b8192e2af1142cf8ccac2d59aa160dda",
strip_prefix = "cub-1.9.9",
urls = [
@ -891,11 +891,11 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "cython",
build_file = clean_dep("//third_party:cython.BUILD"),
build_file = "//third_party:cython.BUILD",
delete = ["BUILD.bazel"],
sha256 = "e2e38e1f0572ca54d6085df3dec8b607d20e81515fb80215aed19c81e8fe2079",
strip_prefix = "cython-0.29.21",
system_build_file = clean_dep("//third_party/systemlibs:cython.BUILD"),
system_build_file = "//third_party/systemlibs:cython.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/cython/cython/archive/0.29.21.tar.gz",
"https://github.com/cython/cython/archive/0.29.21.tar.gz",
@ -904,7 +904,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "arm_neon_2_x86_sse",
build_file = clean_dep("//third_party:arm_neon_2_x86_sse.BUILD"),
build_file = "//third_party:arm_neon_2_x86_sse.BUILD",
sha256 = "213733991310b904b11b053ac224fee2d4e0179e46b52fe7f8735b8831e04dcc",
strip_prefix = "ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f",
urls = [
@ -915,10 +915,10 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "double_conversion",
build_file = clean_dep("//third_party:double_conversion.BUILD"),
build_file = "//third_party:double_conversion.BUILD",
sha256 = "2f7fbffac0d98d201ad0586f686034371a6d152ca67508ab611adc2386ad30de",
strip_prefix = "double-conversion-3992066a95b823efc8ccc1baf82a1cfc73f6e9b8",
system_build_file = clean_dep("//third_party/systemlibs:double_conversion.BUILD"),
system_build_file = "//third_party/systemlibs:double_conversion.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/double-conversion/archive/3992066a95b823efc8ccc1baf82a1cfc73f6e9b8.zip",
"https://github.com/google/double-conversion/archive/3992066a95b823efc8ccc1baf82a1cfc73f6e9b8.zip",
@ -927,7 +927,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "tflite_mobilenet_float",
build_file = clean_dep("//third_party:tflite_mobilenet_float.BUILD"),
build_file = "//third_party:tflite_mobilenet_float.BUILD",
sha256 = "2fadeabb9968ec6833bee903900dda6e61b3947200535874ce2fe42a8493abc0",
urls = [
"https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz",
@ -937,7 +937,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "tflite_mobilenet_quant",
build_file = clean_dep("//third_party:tflite_mobilenet_quant.BUILD"),
build_file = "//third_party:tflite_mobilenet_quant.BUILD",
sha256 = "d32432d28673a936b2d6281ab0600c71cf7226dfe4cdcef3012555f691744166",
urls = [
"https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224_quant.tgz",
@ -988,7 +988,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "tflite_ovic_testdata",
build_file = clean_dep("//third_party:tflite_ovic_testdata.BUILD"),
build_file = "//third_party:tflite_ovic_testdata.BUILD",
sha256 = "033c941b7829b05ca55a124a26a6a0581b1ececc154a2153cafcfdb54f80dca2",
strip_prefix = "ovic",
urls = [
@ -1093,7 +1093,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
tf_http_archive(
name = "nlohmann_json_lib",
build_file = clean_dep("//third_party:nlohmann_json.BUILD"),
build_file = "//third_party:nlohmann_json.BUILD",
sha256 = "c377963a95989270c943d522bfefe7b889ef5ed0e1e15d535fd6f6f16ed70732",
strip_prefix = "json-3.4.0",
urls = [
@ -1110,16 +1110,16 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
],
sha256 = "90b705137b69ee3b5fc655eaca66d0dc9862ea1759226f7ccd3098425ae69571",
strip_prefix = "pybind11-2.6.0",
build_file = clean_dep("//third_party:pybind11.BUILD"),
system_build_file = clean_dep("//third_party/systemlibs:pybind11.BUILD"),
build_file = "//third_party:pybind11.BUILD",
system_build_file = "//third_party/systemlibs:pybind11.BUILD",
)
tf_http_archive(
name = "wrapt",
build_file = clean_dep("//third_party:wrapt.BUILD"),
build_file = "//third_party:wrapt.BUILD",
sha256 = "8a6fb40e8f8b6a66b4ba81a4044c68e6a7b1782f21cfabc06fb765332b4c3e51",
strip_prefix = "wrapt-1.11.1/src/wrapt",
system_build_file = clean_dep("//third_party/systemlibs:wrapt.BUILD"),
system_build_file = "//third_party/systemlibs:wrapt.BUILD",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/GrahamDumpleton/wrapt/archive/1.11.1.tar.gz",
"https://github.com/GrahamDumpleton/wrapt/archive/1.11.1.tar.gz",
@ -1129,7 +1129,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
name = "coremltools",
sha256 = "0d594a714e8a5fd5bd740ad112ef59155c0482e25fdc8f8efa5758f90abdcf1e",
strip_prefix = "coremltools-3.3",
build_file = clean_dep("//third_party:coremltools.BUILD"),
build_file = "//third_party:coremltools.BUILD",
urls = [
"http://mirror.tensorflow.org/github.com/apple/coremltools/archive/3.3.zip",
"https://github.com/apple/coremltools/archive/3.3.zip",

114
third_party/repo.bzl vendored
View File

@ -38,11 +38,9 @@ def _get_env_var(ctx, name):
# Checks if we should use the system lib instead of the bundled one
def _use_system_lib(ctx, name):
syslibenv = _get_env_var(ctx, "TF_SYSTEM_LIBS")
if syslibenv:
for n in syslibenv.strip().split(","):
if n.strip() == name:
return True
if not syslibenv:
return False
return name in [n.strip() for n in syslibenv.split(",")]
# Executes specified command with arguments and calls 'fail' if it exited with
# non-zero code
@ -57,9 +55,6 @@ def _execute_and_check_ret_code(repo_ctx, cmd_and_args):
result.stderr,
))
def _repos_are_siblings():
return Label("@foo//bar").workspace_root.startswith("../")
# Apply a patch_file to the repository root directory.
def _apply_patch(ctx, patch_file):
ctx.patch(patch_file, strip = 1)
@ -73,7 +68,23 @@ def _apply_delete(ctx, paths):
cmd = _wrap_bash_cmd(ctx, ["rm", "-rf"] + [ctx.path(path) for path in paths])
_execute_and_check_ret_code(ctx, cmd)
def _maybe_label(label_string):
return Label(label_string) if label_string else None
def _label_path_dict(ctx, dict):
return {Label(k): ctx.path(v) for k, v in dict.items()}
def _tf_http_archive(ctx):
# Construct all labels early on to prevent rule restart. We want the
# attributes to be strings instead of labels because they refer to files
# in the TensorFlow repository, not files in repos depending on TensorFlow.
# See also https://github.com/bazelbuild/bazel/issues/10515.
patch_file = _maybe_label(ctx.attr.patch_file)
build_file = _maybe_label(ctx.attr.build_file)
system_build_file = _maybe_label(ctx.attr.system_build_file)
system_link_files = _label_path_dict(ctx, ctx.attr.system_link_files)
additional_build_files = _label_path_dict(ctx, ctx.attr.additional_build_files)
if ("mirror.tensorflow.org" not in ctx.attr.urls[0] and
(len(ctx.attr.urls) < 2 and
ctx.attr.name not in _SINGLE_URL_WHITELIST.to_list())):
@ -85,14 +96,6 @@ def _tf_http_archive(ctx):
use_syslib = _use_system_lib(ctx, ctx.attr.name)
# Work around the bazel bug that redownloads the whole library.
# Remove this after https://github.com/bazelbuild/bazel/issues/10515 is fixed.
if ctx.attr.additional_build_files:
for internal_src in ctx.attr.additional_build_files:
_ = ctx.path(Label(internal_src))
# End of workaround.
if not use_syslib:
ctx.download_and_extract(
ctx.attr.urls,
@ -101,32 +104,26 @@ def _tf_http_archive(ctx):
ctx.attr.type,
ctx.attr.strip_prefix,
)
if ctx.attr.delete:
if ctx.attr.delete: # TODO(csigg): use a patch instead.
_apply_delete(ctx, ctx.attr.delete)
if ctx.attr.patch_file != None:
_apply_patch(ctx, ctx.attr.patch_file)
if patch_file:
_apply_patch(ctx, patch_file)
if use_syslib and ctx.attr.system_build_file != None:
if use_syslib and system_build_file:
# Use BUILD.bazel to avoid conflict with third party projects with
# BUILD or build (directory) underneath.
ctx.template("BUILD.bazel", ctx.attr.system_build_file, {
"%prefix%": ".." if _repos_are_siblings() else "external",
}, False)
elif ctx.attr.build_file != None:
ctx.template("BUILD.bazel", system_build_file, executable = False)
elif build_file:
# Use BUILD.bazel to avoid conflict with third party projects with
# BUILD or build (directory) underneath.
ctx.template("BUILD.bazel", ctx.attr.build_file, {
"%prefix%": ".." if _repos_are_siblings() else "external",
}, False)
ctx.template("BUILD.bazel", build_file, executable = False)
if use_syslib:
for internal_src, external_dest in ctx.attr.system_link_files.items():
ctx.symlink(Label(internal_src), ctx.path(external_dest))
for label, path in system_link_files.items():
ctx.symlink(label, path)
if ctx.attr.additional_build_files:
for internal_src, external_dest in ctx.attr.additional_build_files.items():
ctx.symlink(Label(internal_src), ctx.path(external_dest))
for label, path in additional_build_files.items():
ctx.symlink(label, path)
tf_http_archive = repository_rule(
attrs = {
@ -138,9 +135,9 @@ tf_http_archive = repository_rule(
"strip_prefix": attr.string(),
"type": attr.string(),
"delete": attr.string_list(),
"patch_file": attr.label(),
"build_file": attr.label(),
"system_build_file": attr.label(),
"patch_file": attr.string(),
"build_file": attr.string(),
"system_build_file": attr.string(),
"system_link_files": attr.string_dict(),
"additional_build_files": attr.string_dict(),
},
@ -148,16 +145,29 @@ tf_http_archive = repository_rule(
"TF_SYSTEM_LIBS",
],
implementation = _tf_http_archive,
)
"""Downloads and creates Bazel repos for dependencies.
doc = """Downloads and creates Bazel repos for dependencies.
This is a swappable replacement for both http_archive() and
new_http_archive() that offers some additional features. It also helps
ensure best practices are followed.
"""
File arguments are relative to the TensorFlow repository by default. Dependent
repositories that use this rule should refer to files either with absolute
labels (e.g. '@foo//:bar') or from a label created in their repository (e.g.
'str(Label("//:bar"))').""",
)
def _third_party_http_archive(ctx):
# Construct all labels early on to prevent rule restart. We want the
# attributes to be strings instead of labels because they refer to files
# in the TensorFlow repository, not files in repos depending on TensorFlow.
# See also https://github.com/bazelbuild/bazel/issues/10515.
build_file = _maybe_label(ctx.attr.build_file)
system_build_file = _maybe_label(ctx.attr.system_build_file)
patch_file = _maybe_label(ctx.attr.patch_file)
link_files = _label_path_dict(ctx, ctx.attr.link_files)
system_link_files = _label_path_dict(ctx, ctx.attr.system_link_files)
if ("mirror.tensorflow.org" not in ctx.attr.urls[0] and
(len(ctx.attr.urls) < 2 and
ctx.attr.name not in _SINGLE_URL_WHITELIST.to_list())):
@ -189,23 +199,23 @@ def _third_party_http_archive(ctx):
ctx.attr.type,
ctx.attr.strip_prefix,
)
if ctx.attr.delete:
if ctx.attr.delete: # TODO(csigg): use a patch instead.
_apply_delete(ctx, ctx.attr.delete)
if ctx.attr.patch_file != None:
_apply_patch(ctx, ctx.attr.patch_file)
if ctx.attr.patch_file:
_apply_patch(ctx, Label(ctx.attr.patch_file))
ctx.symlink(Label(ctx.attr.build_file), buildfile_path)
link_dict = {}
if use_syslib:
link_dict.update(ctx.attr.system_link_files)
link_dict.update(system_link_files)
for internal_src, external_dest in ctx.attr.link_files.items():
for label, path in link_files.items():
# if syslib and link exists in both, use the system one
if external_dest not in link_dict.values():
link_dict[internal_src] = external_dest
if path not in link_dict.values():
link_dict[label] = path
for internal_src, external_dest in link_dict.items():
ctx.symlink(Label(internal_src), ctx.path(external_dest))
for label, path in link_dict.items():
ctx.symlink(label, path)
# Downloads and creates Bazel repos for dependencies.
#
@ -224,13 +234,11 @@ third_party_http_archive = repository_rule(
"type": attr.string(),
"delete": attr.string_list(),
"build_file": attr.string(mandatory = True),
"system_build_file": attr.string(mandatory = False),
"patch_file": attr.label(),
"system_build_file": attr.string(),
"patch_file": attr.string(),
"link_files": attr.string_dict(),
"system_link_files": attr.string_dict(),
},
environ = [
"TF_SYSTEM_LIBS",
],
environ = ["TF_SYSTEM_LIBS"],
implementation = _third_party_http_archive,
)

View File

@ -29,13 +29,13 @@ def _arm_compiler_configure_impl(repository_ctx):
)),
"%{PYTHON_INCLUDE_PATH}%": python_include_path,
})
repository_ctx.symlink(repository_ctx.attr.build_file, "BUILD")
repository_ctx.symlink(Label(repository_ctx.attr.build_file), "BUILD")
arm_compiler_configure = repository_rule(
implementation = _arm_compiler_configure_impl,
attrs = {
"remote_config_repo_arm": attr.string(mandatory = False, default = ""),
"remote_config_repo_aarch64": attr.string(mandatory = False, default = ""),
"build_file": attr.label(),
"build_file": attr.string(),
},
)

View File

@ -29,13 +29,13 @@ def _arm_linux_toolchain_configure_impl(repository_ctx):
)),
"%{PYTHON_INCLUDE_PATH}%": python_include_path,
})
repository_ctx.symlink(repository_ctx.attr.build_file, "BUILD")
repository_ctx.symlink(Label(repository_ctx.attr.build_file), "BUILD")
arm_linux_toolchain_configure = repository_rule(
implementation = _arm_linux_toolchain_configure_impl,
attrs = {
"aarch64_repo": attr.string(mandatory = True, default = ""),
"armhf_repo": attr.string(mandatory = True, default = ""),
"build_file": attr.label(),
"build_file": attr.string(),
},
)