Bazel 如何设置//external:android/sdk,当它没有绑定到任何东西时

Bazel 如何设置//external:android/sdk,当它没有绑定到任何东西时,bazel,Bazel,在尝试构建使用bazel的git repo时,我遇到了一个错误,即//external:android/sdk没有绑定到任何东西,我无法找到该配置的位置,因此我可以修复它 我已经加载了一个新的ubuntu 14.04,我正试图从源代码构建github.com/google/shipshape。我已经按照给出的说明安装了构建它所需的一切 基本上安装了golang、openjdk-8-jdk、openjdk-8-source、bazel,并运行了以下程序: mkdir -p github.com/g

在尝试构建使用bazel的git repo时,我遇到了一个错误,即//external:android/sdk没有绑定到任何东西,我无法找到该配置的位置,因此我可以修复它

我已经加载了一个新的ubuntu 14.04,我正试图从源代码构建github.com/google/shipshape。我已经按照给出的说明安装了构建它所需的一切

基本上安装了golang、openjdk-8-jdk、openjdk-8-source、bazel,并运行了以下程序:

mkdir -p github.com/google && cd github.com/google
git clone https://github.com/google/shipshape.git
cd shipshape
./configure        # Run initial Shipshape+Bazel setup
bazel build //...  # Build all Shipshape source
但是当我使用
bazel build//…
构建时,我会遇到以下错误:

____Loading package: shipshape
____Loading package: shipshape/util/rpc/client
____Loading package: shipshape/analyzers/codealert
____Loading package: shipshape/contrib/phabricator
____Loading package: shipshape/javatests/com/google/shipshape/analyzers
____Loading package: third_party/kythe/java/com/google/devtools/kythe/platform/shared
____Loading package: third_party/go-glog
____Loading package: third_party/guava
____Loading package: third_party/gson
____Loading package: shipshape/test/dind/docker
____Loading package: third_party/bazel/tools/jdk
____Loading package: tools/test
____Loading...
____Loading package: @bazel_tools//tools/cpp
____Loading package: @local-jdk//
____Loading package: @bazel_tools//tools/genrule
____Loading package: @bazel_tools//tools/test
____Loading package: @bazel_tools//third_party/java/jdk/langtools
____Loading complete.  Analyzing...
ERROR: /DEFAULT.WORKSPACE:75:1: in bind rule //external:android/sdk: The external label '//external:android/sdk' is not bound to anything.
ERROR: Analysis of target '//tools/defaults:android_jar' failed; build aborted.
____Elapsed time: 3.086s
谷歌搜索给了我一个链接,上面写着

这并没有告诉你需要更新一些信息 在您的工作区中指向您的Android SDK。我很高兴 有一个更友好的错误消息

我将其解释为我应该更新的某个地方有一个绑定,因此需要更新现有的代码行

但是我应该在其中执行内置的文件夹中的工作区是空的,所以应该有另一个文件,它有一个我可以编辑的绑定

我找到了这个文件夹
/home/alex/.bazel/base_workspace
,但我没有找到任何似乎是要编辑的正确工作区

我在grep中也发现了这些:
~/.cache/bazel/\u bazel\u root/hash/README
~/.cache/bazel/\u bazel\u root/hash/external/local jdk/WORKSPACE 但鉴于它们在缓存中,这可能是错误的

所以要么DEFAULT.WORKSPACE在其他地方,我需要在那里做一些绑定操作,让它找到我的android sdk,要么DEFAUL.WORKSPACE实际上是我的shipshape文件夹中的空工作区,它在bazel构建运行时填充,然后删除


但无论是哪种情况,我都不知道应该如何将//external:android/sdk绑定到任何东西。

目前,构建
/…
并不奏效,因为它包含了Bazel构建任何语言或平台所需的一切。(这实际上已经发布,但尚未发布)。我建议现在运行
bazel build//shipshape/…

(如果您正在构建Android目标,您可能希望按照上述方式设置您的工作区文件,但您没有,所以不必麻烦。)