Release 0.18.0rc3 (2018-09-12)
Baseline: c062b1f1730f3562d5c16a037b374fc07dc8d9a2
Cherry picks: + 2834613f93f74e988c51cf27eac0e59c79ff3b8f: Include also ext jars in the bootclasspath jar. + 2579b791c023a78a577e8cb827890139d6fb7534: Fix toolchain_java9 on --host_javabase= after 7eb9ea150fb889a93908d96896db77d5658e5005
Incompatible changes:
- Loading @bazel_tools//tools/build_defs/repo:git_repositories.bzl no longer works. Load @bazel_tools//tools/build_defs/repo:git.bzl instead.
- Labels in C++ rules' linkopts attribute are not expanded anymore unless they are wrapped, e.g: $(location //foo:bar)
- If the same artifact is generated by two distinct but identical actions, and a downstream action has both those actions' outputs in its inputs, the artifact will now appear twice in the downstream action's inputs. If this causes problems in Skylark actions, you can use the uniquify=True argument in Args.add_args.
- New bazelrc file list.
- Windows: when BAZEL_SH envvar is not defined and Bazel searches for a suitable bash.exe, Bazel will no longer look for Git Bash and no longer recommend installing it as a Bash implementation. See issue #5751.
- Adds --incompatible_expand_directories to automatically expand directories in skylark command lines. Design doc: https://docs.google.com/document/d/11agWFiOUiz2htBLj6swPTob5z78TrC xm8DQE4uJLOwM
- --incompatible_package_name_is_a_function now defaults to true. The magic values PACKAGE_NAME and REPOSITORY_NAME are no longer exposed.
New features:
- The aquery command now supports --output=text.
- Java, runfiles: the Java runfiles library is now in @bazel_tools//tools/java/runfiles. The old target (@bazel_tools//tools/runfiles:java-runfiles) is deprecated and will be removed in Bazel 0.18.0.
- Add --modify_execution_info, a flag to customize action execution info.
Important changes:
- Allow @ in package names.
- Remove support for java_runtime_suite; use alias() together with select() instead.
- Python wrapper scripts for MSVC are removed.
- [JavaInfo] Outputs are merged in java_common.merge().
- Faster analysis by improved parallelization.
- --experimental_shortened_obj_file_path is removed.
- Introduce the --remote_cache_proxy flag, which allows for remote http caching to connect via a unix domain socket.
- No longer define G3_VERSION_INFO for c++ linkstamp compiles, as it was a duplicate of G3_TARGET_NAME.
- Added support for Android NDK r17. The default STL is now
libc++
, and support for targeting mips
, mips64
and ARMv5
(armeabi
) has been removed.
- Add aquery command to get analysis time information about the action graph.
- Fixed compatibility with aar_import when using aapt2. AAPT2 is now supported for Android app builds without resource shrinking. To use it, pass the
--android_aapt=aapt2
flag or define android_binary.aapt_version=aapt2.
- Code coverage is collected for Java binaries invoked from sh_test.
- java_common.compile creates the native headers jar accesible via JavaInfo.outputs.native_headers.
- Deleting deprecated no-op flag --show_package_location
- The JDK shipped with Bazel was updated to JDK10.
- Rename the startup flag --host_javabase to --server_javabase to avoid confusion with the build flag --host_javabase
- newly added options --experimental_repository_hash_file and --experimental_verify_repository_rules allow to verify for repositories the directory generated against pre-recorded hashes. See documentation for those options.
- Removed the gen_jars output group
- --subcommands can now take a "pretty_print" value ("--subcommands=pretty_print") to print the arguments of subcommands as a list for easier reading.
- follow-up to https://github.com/bazelbuild/bazel/commit/1ac359743176e659e9c7472645e3142f3c44b9e8
- A rule error is now thrown if a Skylark rule implementation function returns multiple providers of the same type.
- When using Bazel's remote execution feature and Bazel has to fallback to local execution for an action, Bazel used non-sandboxed local execution until now. From this release on, you can use the new flag --remote_local_fallback_strategy= to tell Bazel which strategy to use in that case.
- Execution Log Parser can now, when printing it out, filter the log by runner type
- A rule error is now thrown if a Skylark rule implementation function returns multiple providers of the same type.
- Set --defer_param_files to default to true.
- Sort attribute lists in proto-form query output to fix non-deterministic genquery output.
- Replace 0/1 with False/True for testonly attribute
- bazel now supports a .bazelignore file specifying directories to be ignored
- Add more detailed reporting of the differences between startup options.
- update data binding to 3.2.0
- For Android incremental dexing actions, Bazel now persists its DexBuilder process across individual actions. From our benchmarks, this results in a 1.2x speedup for clean local builds.
- The standard
xcode_VERSION
feature now always uses exactly two components in the version, even if you specify --xcode_version
with more or fewer than two.
- A rule error will be thrown if a Skylark rule implementation function returns multiple providers of the same type. Try the
--incompatible_disallow_conflicting_providers
flag to ensure your code is forward-compatible.
- Removed notion of FULLY_STATIC linking mode from C++ rules.
- In documentation, we've renamed Skylark into Starlark.
- Execution Log Parser can now, when printing it out, reorder the actions for easier text diffs
- Linkstamps are no longer recompiled after server restart.
- Use VanillaJavaBuilder and disable header compilation in toolchain_hostjdk8. The default toolchain will soon drop compatibility with JDK 8. Using a JDK 8 host_javabase will only be supported when using 'VanillaJavaBuilder' (which does not support Error Prone, Strict Java Deps, or reduced classpaths) and with header compilation disabled.
- A new, experimental, options --experimental_ui_deduplicate was added that makes the UI try to deduplicate messages from actions to keep the output on the console cleaner.
- Add ExecutionInfo to aquery output for ExecutionInfoSpecifier actions.
- The Android resource processing pipeline now supports persistence via worker processes. Enable it with
--persistent_android_resource_processor
. We have observed 1.5x faster clean local builds, and up to 2.5x faster incremental local builds.
- --windows_exe_launcher is deprecated, this flag will be removed soon. Please make sure you are not using it.
- CppRules: cc_binary link action no longer hardcodes -static-libgcc for toolchains that support embedded runtimes (guarded by --experimental_dont_emit_static_libgcc temporarily).
- When computing --instrumentation_filter, end filter patterns with "[/:]" to match non-top-level packages exactly and treat top-level targets consistently.
- In the future, Bazel will expand tree artifacts in runfiles, too, which causes the sandbox to link each file individually into the sandbox directory, instead of symlinking the entire directory. In this release, the behavior is not enabled by default yet. Please try it out via --incompatible_symlinked_sandbox_expands_tree_artifacts_in_runfile s_tree and let us know if it causes issues. If everything looks good, this behavior will become the default in a following release.
- The startup flag --host_javabase has been renamed to --server_javabase to avoid confusion with the build flag --host_javabase.
- objc_library now supports the module_name attribute
- Added "bazel info server_log" command to obtain the main Bazel server log file path, which can be quite useful for debugging Bazel issues.
- Support fileset expansion in ctx.actions.args(). Controlled by --incompatible_expand_directories.
- Fixes aapt shrink resources not respecting filters configurations
- --javacopt= no longer affects compilations of tools that are executed during the build; use --host_javacopt= to change javac flags in the host configuration.
- Revert the default of --incompatible_package_name_is_a_function to false.
- Future versions of Bazel will require a locally installed JDK for Java development. Previously Bazel would fall back to using the embedded --server_javabase if no JDK as available. Pass --incompatible_never_use_embedded_jdk_for_javabase to disable the legacy behaviour.
Notice: Bazel installers contain binaries licensed under the GPLv2 with Classpath exception. Those installers should always be redistributed along with the source code.
Some versions of Bazel contain a bundled version of OpenJDK. The license of the bundled OpenJDK and other open-source components can be displayed by running the command bazel license
. The vendor and version information of the bundled OpenJDK can be displayed by running the command bazel info java-runtime
. The binaries and source-code of the bundled OpenJDK can be downloaded from our mirror server.
Security: All our binaries are signed with our public key 48457EE0.
Index of files