commit | b7d419bc09396eaf7e45aba529cbe2463824edaf | [log] [tgz] |
---|---|---|
author | Keith Smiley <keithbsmiley@gmail.com> | Wed Mar 04 02:09:39 2020 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Mar 04 02:10:47 2020 -0800 |
tree | ef89c4cf8fd92ca9b437653c0cb85a169ad34dbe | |
parent | 3c7cc747ac653dca8b88a9e43726a794e2c27a9c [diff] |
Handle Xcode command line tools when Xcode is installed Previously if you had a version of Xcode installed, but the command line tools were selected with `xcode-select`, bazel would fail with this error: ``` local_config_cc/BUILD:62:5: in apple_cc_toolchain rule @local_config_cc//:cc-compiler-armeabi-v7a: Xcode version must be specified to use an Apple CROSSTOOL. If your Xcode version has changed recently, verify that "xcode-select -p" is correct and then try: "bazel shutdown" to re-run Xcode configuration ``` This happened because we ran `xcodebuild -version` which fails when the command line tools are selected with this error: ``` xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance ``` And therefore xcode_autoconf didn't complete successfully, but osx_cc_configure did because xcode_locator happily found the Xcode you had installed but not selected. With this change the behavior is, if there's an xcodebuild error during xcode_autoconf, it's ignored (which is ok because xcode_locator will still fail if no Xcode versions are installed), and if there are Xcode versions discovered, pick the newest (by a dumb string sort) as the default version. In all other cases this shouldn't change behavior for anyone because: 1. With no command line tools and no Xcodes this code doesn't get hit at all 2. With only the command line tools installed xcode_locator returns no Xcode versions and xcode_autoconf will still exit early just like before, just from xcode_locator returning nothing instead of `xcodebuild -version` failing 3. With `xcode-select` set to a Xcode the previous behavior of choosing a default Xcode will be the same since `xcodebuild -version` will succeed. Fixes https://github.com/bazelbuild/bazel/issues/5178 Closes #8975. PiperOrigin-RevId: 298802222
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md