bazel - 使用本地 LLVM 存储库构建 TensorFlow 时出错
bazel - Error building TensorFlow with local LLVM repository
本质上,我想 运行 TensorFlow 使用自定义 LLVM 存储库,而不是 bazel 从中提取的 llvm-mirror。
我做了以下修改:
将 //tensorflow/workspace.bzl
中的 temp_workaround_http_archive
规则更改为:
native.local_repository (
name = "llvm",
path = "/git/llvm/",
)
在 /git/llvm
我添加了文件 WORKSPACE
包含:
workspace( name = "llvm" )
但是,我知道 llvm.build
文件是必需的,但由于我是 bazel 的新手,所以我不确定它应该位于何处。
我收到以下错误日志:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
ERROR: /git/tensorflow/tensorflow/tools/pip_package/BUILD:81:1: no such package '@llvm//': BUILD file not found on package path and referenced by '//tensorflow/tools/pip_package:licenses'.
ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted.
INFO: Elapsed time: 0.219s
我从源代码安装了 TensorFlow。这是版本信息:
$ git rev-parse HEAD
4c3bb1aeb7bb46bea35036433742a720f39ce348
$ bazel version
Build label: 0.4.5
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Mar 16 12:19:38 2017 (1489666778)
Build timestamp: 1489666778
Build timestamp as int: 1489666778
在此先感谢您的帮助!
找到修复。其实很简单。
bazel 中的 local_repository
规则仅适用于外部 bazel 存储库。要使用非 bazel 外部存储库,我们需要使用 new_local_repository
将 build_file
作为参数。
可以使用python的http服务器功能搭建本地文件服务器,如:
python3 -m http.server
然后编辑文件"tensorflow/workspace.bzl"
tf_http_archive(
name = "llvm",
urls = [
"https://mirror.bazel.build/**/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
"http://localhost:8000/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
"https://github.com/**/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
],
sha256 = "57a8333f8e6095d49f1e597ca18e591aba8a89d417f4b58bceffc5fe1ffcc02b",
strip_prefix = "llvm-195a164675af86f390f9816e53291013d1b551d7",
build_file = str(Label("//third_party/llvm:llvm.BUILD")),
)
在urls的中间一行添加一个本地文件路径,然后重新构建。
本质上,我想 运行 TensorFlow 使用自定义 LLVM 存储库,而不是 bazel 从中提取的 llvm-mirror。
我做了以下修改:
将
//tensorflow/workspace.bzl
中的temp_workaround_http_archive
规则更改为:native.local_repository ( name = "llvm", path = "/git/llvm/", )
在
/git/llvm
我添加了文件WORKSPACE
包含:workspace( name = "llvm" )
但是,我知道 llvm.build
文件是必需的,但由于我是 bazel 的新手,所以我不确定它应该位于何处。
我收到以下错误日志:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
ERROR: /git/tensorflow/tensorflow/tools/pip_package/BUILD:81:1: no such package '@llvm//': BUILD file not found on package path and referenced by '//tensorflow/tools/pip_package:licenses'.
ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted.
INFO: Elapsed time: 0.219s
我从源代码安装了 TensorFlow。这是版本信息:
$ git rev-parse HEAD
4c3bb1aeb7bb46bea35036433742a720f39ce348
$ bazel version
Build label: 0.4.5
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Mar 16 12:19:38 2017 (1489666778)
Build timestamp: 1489666778
Build timestamp as int: 1489666778
在此先感谢您的帮助!
找到修复。其实很简单。
bazel 中的 local_repository
规则仅适用于外部 bazel 存储库。要使用非 bazel 外部存储库,我们需要使用 new_local_repository
将 build_file
作为参数。
可以使用python的http服务器功能搭建本地文件服务器,如:
python3 -m http.server
然后编辑文件"tensorflow/workspace.bzl"
tf_http_archive(
name = "llvm",
urls = [
"https://mirror.bazel.build/**/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
"http://localhost:8000/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
"https://github.com/**/195a164675af86f390f9816e53291013d1b551d7.tar.gz",
],
sha256 = "57a8333f8e6095d49f1e597ca18e591aba8a89d417f4b58bceffc5fe1ffcc02b",
strip_prefix = "llvm-195a164675af86f390f9816e53291013d1b551d7",
build_file = str(Label("//third_party/llvm:llvm.BUILD")),
)
在urls的中间一行添加一个本地文件路径,然后重新构建。