Release 0.5.0 (2017-05-26)

Baseline: f3ae88ee043846e7acdffd645137075a4e72c573

Cherry picks:
   + c58ba098526b748f9c73e6229cafd74748205aa1:
     Release to GCS: put the final release in its own directory
   + 0acead4ea3631240659836ce6ecd6d7f67fd352b:
     Update protobuf to latest master at a64497c and apply
     @laszlocsomor's latest changes from
     https://github.com/google/protobuf/pull/2969 on top of it.
   + d0242ce4a87929f2528f4602d0fb09d1ccfcea94:
     Make symlinks consistent
   + d953ca8b87a46decbce385cebb446ae0dd390881:
     Clean VanillaJavaBuilder output directories
   + 755669fb5de1f4e762f27c19776cac9f410fcb94:
     Pass all the environment variable to Bazel during bootstrapping
   + 6f041661ca159903691fcb443d86dc7b6454253d:
     Do not mark the JDK7 installer -without-jdk-installer
   + 720561113bfa702acfc2ca24ce3cc3fd7ee9c115:
     Fix #2958: Installer should not overwrite bazelrc
   + 511c35b46cead500d4e76706e0a709e50995ceba:
     Bootstrap: move the fail function to the top
   + 8470be1122825aae8ad0903dd1e1e2a90cce47d2:
     Clean up javac and Error Prone targets
   + 4a404de2c6c38735167e17ab41be45ef6fc4713a:
     Update javac version to 9-dev-r4023-2
   + 36ce4b433e19498a78c34540d5a166d4e0006b22:
     Update javac version to 9-dev-r4023-2
   + 38949b8526bdb3e6db22f3846aac87162c28c33f:
     Migrate off versioned javac and Error Prone targets
   + 1a57d298f8aa6ea8136d93223902104f2479cd2a:
     Re-enabling passing -sourcepath via javacopts.
   + eb565f408e03125e92d42b00756e519795be6593:
     Make make sure that msys build actually builds msys version
   + 39f328cf392056618d1a3ead4835a138b189a06d:
     Fix typo. Also do not override host_cpu for msvc.
   + 624802893f4fe72118f00a78452605d41a2e1c6f:
     Select correct JDK for windows_msys
   + c4f271d1a68366b6fa5ff38ea7d951b6a22af044:
     Automated g4 rollback of commit
     3e5edafa2a04a71cd3596e929e83222da725f3f9.
   + 926180997a0f296a5a009326aead887279ce0a90:
     Remove process-tools.cc which I forgot to delete during the last
     rollback.
   + baca6e4cb023649920871b74810927d304729e59:
     Fix #2982: Bazel installer should not check for installed JDK if
     using a bundled JDK.
   + 866ecc8c3d5e0b899e3f0c9c6b2265f16daae842:
     Disable msys path conversion on Windows.
   + cc21998c299b4d1f97df37b961552ff8168da17f:
     Rollforward #2 of: Basic open-source crosstool to support
     targeting apple platform types.
   + 0f0ccc4fc8229c1860a9c9b58089d6cfb2ee971f:
     Escape % in strings that will appear in Crosstool
   + 3b08f774e7938928e3a240a47a0a7554cdc8d50b:
     Adding feature for linking C Run-Time library on Windows

Incompatible changes:

  - Bazel's Linux sandbox no longer mounts an empty tmpfs on /tmp,
    instead the existing /tmp is mounted read-write. If you prefer
    to have a tmpfs on /tmp for sandboxed actions for increased
    hermeticity, please use the flag --sandbox_tmpfs_path=/tmp.
  - Converting artifacts to strings and printing them now return
    "File" instead of "Artifact" to be consistent with the type name.
  - The return type of depset.to_list() is now a list rather than a
    frozen list. (Modifying the list has no effect on the depset.)
  - Bazel now prints logs in single lines to java.log
  - --use_dash, --dash_url and --dash_secret are removed.
  - Remote repositories must define any remote repositories they
    themselves use (e.g., if @x//:foo depends on @y//:bar, @y must be
    defined
    in @x's WORKSPACE file).
  - Remote repositories must define any remote repositories they
    themselves use (e.g., if @x//:foo depends on @y//:bar, @y must be
    defined
    in @x's WORKSPACE file).
  - objc_xcodeproj has been removed, use tulsi.bazel.build instead.

New features:

  - If grte_top is a label, it can now follow non-configurable
    redirects.
  - Optional coverage_files attribute to cc_toolchain
  - "query --output=build" now includes select()s
  - Raw LLVM profiles are now supported.

Important changes:

  - Automatically generate Proguard mapping when resource shrinking
    and Proguard are enabled.
  - New rules in Bazel: proto_library, java_lite_proto_library,
    java_proto_library and cc_proto_library
  - Activate the "dead_strip" feature if objc binary stripping is
    enabled.
  - More stable naming scheme for lambda classes in desugared android
    code
  - Convert --use_action_cache to a regular option
  - Per-architecture dSYM binaries are now propagated by
    apple_binary's AppleDebugOutputsProvider.
  - Avoid factory methods when desugaring stateless lambdas for
    Android
  - desugar calls to Objects.requireNonNull(Object o) with
    o.getClass() for android
  - Add an --copy_bridges_from_classpath argument to android
    desugaring tool
  - Change how desugar finds desugared classes to have it working on
    Windows
  - Evaluation of commands on TargetsBelowDirectory patterns
    (e.g. //foo/...) matching packages that fail to load now report
    more
    detailed error messages in keep_going mode.
  - Allow to have several inputs and outputs
  - Repository context's execute() function can print stdout/stderr
    while running. To enable, pass quiet=False.
  - Bazel can now be built with a bundled version of the OpenJDK.
    This makes it possible to use Bazel on systems without a JDK, or
    where
    the installed JDK is too old.
  - The --jobs flag now defaults to "auto", which causes Bazel to
    use a reasonable degree of parallelism based on the local
    machine's
    capacity.
  - Bazel benchmark (perf.bazel.build) supports Java and Cpp targets.
  - no factory methods generated for lambda expressions on android
  - The Linux sandbox no longer changes the user to 'nobody' by
    default, instead the current user is used as is. The old behavior
    can be
    restored via the --sandbox_fake_username flag.
  - /tmp and /dev/shm are now writable by default inside the
    Linux sandbox.
  - Bazel can now use the process-wrapper + symlink tree based
    sandbox implementation in FreeBSD.
  - turn on --experimental_incremental_dexing_error_on_missed_jars by
    default.
  - All android_binarys are now signed with both Apk Signature V1 and
    V2. See https://source.android.com/security/apksigning/v2.html
    for more details.
  - Windows MSVC wrappers: Not filtering warning messages anymore,
    use --copt=-w and --host_copt=-w to suppress them.
  - A downloader bug was fixed that prevented RFC 7233 Range
    connection resumes from working with certain HTTP servers
  - Introduces experimental android_device rule for configuring and
    launching Android emulators.
  - For boolean flags, setting them to false using --no_<flag_name>
    is deprecated. Use --no<flag_name> without the underscore, or
    --<flag_name>=false instead.
  - Add --experimental_android_compress_java_resources flag to store
    java
    resources as compressed inside the APK.
  - Removed --experimental_use_jack_for_dexing and libname.jack
    output of
    android_library.
  - blaze canonicalize-flags now takes a --show_warnings flag
  - Changing --invocation_policy will no longer force a server
    restart.
  - Bazel now supports Android NDK14.
  - android_binary multidex should now work without additional flags.
  - Use action_config in crosstool for static library archiving,
    remove ar_flag.
  - new option for bazel canonicalize-flags, --canonicalize_policy
  - Use action_config in crosstool for static library archiving,
    remove ar_flag.
  - android_library exports_manifest now defaults to True.
  - Fix select condition intersections.
  - Adds a --override_repository option that takes a repository
    name and path. This forces Bazel to use the directory at that path
    for the repository. Example usage:
    `--override_repository=foo=/home/user/gitroot/foo`.
  - fix idempotency issue with desugaring lambdas in interface
    initializers for android
  - --experimental_android_use_singlejar_for_multidex is now a no-op
    and will eventually be removed.
  - Every local_repository now requires a WORKSPACE file.
  - Remove jack and jill attributes of the android_sdk rule.
  - Add Skylark stubs needed to remove sysroot from CppConfiguration.
  - Desugar try-with-resources so that this language feature is
    available
    to deveces with API level under 19.
  - The flag --worker_max_retries was removed. The
    WorkerSpawnStrategy no longer retries execution of failed Spawns,
    the reason being that this just masks compiler bugs and isn't
    done for any other execution strategy either.
  - Bazel will no longer gracefully restart workers that crashed /
    quit, instead this triggers a build failure.
  - All java resources are now compressed in android_binary APKs by
    default.
  - All java resources are now compressed in android_binary APKs by
    default.
  - android_ndk_repository now creates a cc_library
    (@androidndk//:cpufeatures) for the cpufeatures library that is
    bundled in the Android NDK. See
    https://developer.android.com/ndk/guides/cpu-features.html for
    more details.
  - 'output_groups' and 'instrumented_files' cannot be specified in
    DefaultInfo.
  - You can increase the CPU reservation for tests by adding a
    "cpu:<n>" (e.g. "cpu:4" for four cores) tag to their rule in a
    BUILD file. This can be used if tests would otherwise overwhelm
    your system if there's too much parallelism.
  - Deprecate use_singlejar_for_proguard_libraryjars and force
    behavior to always on.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cac3fd2..ff5bcca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,209 @@
+## Release 0.5.0 (2017-05-26)
+
+```
+Baseline: f3ae88ee043846e7acdffd645137075a4e72c573
+
+Cherry picks:
+   + c58ba098526b748f9c73e6229cafd74748205aa1:
+     Release to GCS: put the final release in its own directory
+   + 0acead4ea3631240659836ce6ecd6d7f67fd352b:
+     Update protobuf to latest master at a64497c and apply
+     @laszlocsomor's latest changes from
+     https://github.com/google/protobuf/pull/2969 on top of it.
+   + d0242ce4a87929f2528f4602d0fb09d1ccfcea94:
+     Make symlinks consistent
+   + d953ca8b87a46decbce385cebb446ae0dd390881:
+     Clean VanillaJavaBuilder output directories
+   + 755669fb5de1f4e762f27c19776cac9f410fcb94:
+     Pass all the environment variable to Bazel during bootstrapping
+   + 6f041661ca159903691fcb443d86dc7b6454253d:
+     Do not mark the JDK7 installer -without-jdk-installer
+   + 720561113bfa702acfc2ca24ce3cc3fd7ee9c115:
+     Fix #2958: Installer should not overwrite bazelrc
+   + 511c35b46cead500d4e76706e0a709e50995ceba:
+     Bootstrap: move the fail function to the top
+   + 8470be1122825aae8ad0903dd1e1e2a90cce47d2:
+     Clean up javac and Error Prone targets
+   + 4a404de2c6c38735167e17ab41be45ef6fc4713a:
+     Update javac version to 9-dev-r4023-2
+   + 36ce4b433e19498a78c34540d5a166d4e0006b22:
+     Update javac version to 9-dev-r4023-2
+   + 38949b8526bdb3e6db22f3846aac87162c28c33f:
+     Migrate off versioned javac and Error Prone targets
+   + 1a57d298f8aa6ea8136d93223902104f2479cd2a:
+     Re-enabling passing -sourcepath via javacopts.
+   + eb565f408e03125e92d42b00756e519795be6593:
+     Make make sure that msys build actually builds msys version
+   + 39f328cf392056618d1a3ead4835a138b189a06d:
+     Fix typo. Also do not override host_cpu for msvc.
+   + 624802893f4fe72118f00a78452605d41a2e1c6f:
+     Select correct JDK for windows_msys
+   + c4f271d1a68366b6fa5ff38ea7d951b6a22af044:
+     Automated g4 rollback of commit
+     3e5edafa2a04a71cd3596e929e83222da725f3f9.
+   + 926180997a0f296a5a009326aead887279ce0a90:
+     Remove process-tools.cc which I forgot to delete during the last
+     rollback.
+   + baca6e4cb023649920871b74810927d304729e59:
+     Fix #2982: Bazel installer should not check for installed JDK if
+     using a bundled JDK.
+   + 866ecc8c3d5e0b899e3f0c9c6b2265f16daae842:
+     Disable msys path conversion on Windows.
+   + cc21998c299b4d1f97df37b961552ff8168da17f:
+     Rollforward #2 of: Basic open-source crosstool to support
+     targeting apple platform types.
+   + 0f0ccc4fc8229c1860a9c9b58089d6cfb2ee971f:
+     Escape % in strings that will appear in Crosstool
+   + 3b08f774e7938928e3a240a47a0a7554cdc8d50b:
+     Adding feature for linking C Run-Time library on Windows
+```
+
+Incompatible changes:
+
+  - Bazel's Linux sandbox no longer mounts an empty tmpfs on /tmp,
+    instead the existing /tmp is mounted read-write. If you prefer
+    to have a tmpfs on /tmp for sandboxed actions for increased
+    hermeticity, please use the flag --sandbox_tmpfs_path=/tmp.
+  - Converting artifacts to strings and printing them now return
+    "File" instead of "Artifact" to be consistent with the type name.
+  - The return type of depset.to_list() is now a list rather than a
+    frozen list. (Modifying the list has no effect on the depset.)
+  - Bazel now prints logs in single lines to java.log
+  - --use_dash, --dash_url and --dash_secret are removed.
+  - Remote repositories must define any remote repositories they
+    themselves use (e.g., if @x//:foo depends on @y//:bar, @y must be
+    defined
+    in @x's WORKSPACE file).
+  - Remote repositories must define any remote repositories they
+    themselves use (e.g., if @x//:foo depends on @y//:bar, @y must be
+    defined
+    in @x's WORKSPACE file).
+  - objc_xcodeproj has been removed, use tulsi.bazel.build instead.
+
+New features:
+
+  - If grte_top is a label, it can now follow non-configurable
+    redirects.
+  - Optional coverage_files attribute to cc_toolchain
+  - "query --output=build" now includes select()s
+  - Raw LLVM profiles are now supported.
+
+Important changes:
+
+  - Automatically generate Proguard mapping when resource shrinking
+    and Proguard are enabled.
+  - New rules in Bazel: proto_library, java_lite_proto_library,
+    java_proto_library and cc_proto_library
+  - Activate the "dead_strip" feature if objc binary stripping is
+    enabled.
+  - More stable naming scheme for lambda classes in desugared android
+    code
+  - Convert --use_action_cache to a regular option
+  - Per-architecture dSYM binaries are now propagated by
+    apple_binary's AppleDebugOutputsProvider.
+  - Avoid factory methods when desugaring stateless lambdas for
+    Android
+  - desugar calls to Objects.requireNonNull(Object o) with
+    o.getClass() for android
+  - Add an --copy_bridges_from_classpath argument to android
+    desugaring tool
+  - Change how desugar finds desugared classes to have it working on
+    Windows
+  - Evaluation of commands on TargetsBelowDirectory patterns
+    (e.g. //foo/...) matching packages that fail to load now report
+    more
+    detailed error messages in keep_going mode.
+  - Allow to have several inputs and outputs
+  - Repository context's execute() function can print stdout/stderr
+    while running. To enable, pass quiet=False.
+  - Bazel can now be built with a bundled version of the OpenJDK.
+    This makes it possible to use Bazel on systems without a JDK, or
+    where
+    the installed JDK is too old.
+  - The --jobs flag now defaults to "auto", which causes Bazel to
+    use a reasonable degree of parallelism based on the local
+    machine's
+    capacity.
+  - Bazel benchmark (perf.bazel.build) supports Java and Cpp targets.
+  - no factory methods generated for lambda expressions on android
+  - The Linux sandbox no longer changes the user to 'nobody' by
+    default, instead the current user is used as is. The old behavior
+    can be
+    restored via the --sandbox_fake_username flag.
+  - /tmp and /dev/shm are now writable by default inside the
+    Linux sandbox.
+  - Bazel can now use the process-wrapper + symlink tree based
+    sandbox implementation in FreeBSD.
+  - turn on --experimental_incremental_dexing_error_on_missed_jars by
+    default.
+  - All android_binarys are now signed with both Apk Signature V1 and
+    V2. See https://source.android.com/security/apksigning/v2.html
+    for more details.
+  - Windows MSVC wrappers: Not filtering warning messages anymore,
+    use --copt=-w and --host_copt=-w to suppress them.
+  - A downloader bug was fixed that prevented RFC 7233 Range
+    connection resumes from working with certain HTTP servers
+  - Introduces experimental android_device rule for configuring and
+    launching Android emulators.
+  - For boolean flags, setting them to false using --no_<flag_name>
+    is deprecated. Use --no<flag_name> without the underscore, or
+    --<flag_name>=false instead.
+  - Add --experimental_android_compress_java_resources flag to store
+    java
+    resources as compressed inside the APK.
+  - Removed --experimental_use_jack_for_dexing and libname.jack
+    output of
+    android_library.
+  - blaze canonicalize-flags now takes a --show_warnings flag
+  - Changing --invocation_policy will no longer force a server
+    restart.
+  - Bazel now supports Android NDK14.
+  - android_binary multidex should now work without additional flags.
+  - Use action_config in crosstool for static library archiving,
+    remove ar_flag.
+  - new option for bazel canonicalize-flags, --canonicalize_policy
+  - Use action_config in crosstool for static library archiving,
+    remove ar_flag.
+  - android_library exports_manifest now defaults to True.
+  - Fix select condition intersections.
+  - Adds a --override_repository option that takes a repository
+    name and path. This forces Bazel to use the directory at that path
+    for the repository. Example usage:
+    `--override_repository=foo=/home/user/gitroot/foo`.
+  - fix idempotency issue with desugaring lambdas in interface
+    initializers for android
+  - --experimental_android_use_singlejar_for_multidex is now a no-op
+    and will eventually be removed.
+  - Every local_repository now requires a WORKSPACE file.
+  - Remove jack and jill attributes of the android_sdk rule.
+  - Add Skylark stubs needed to remove sysroot from CppConfiguration.
+  - Desugar try-with-resources so that this language feature is
+    available
+    to deveces with API level under 19.
+  - The flag --worker_max_retries was removed. The
+    WorkerSpawnStrategy no longer retries execution of failed Spawns,
+    the reason being that this just masks compiler bugs and isn't
+    done for any other execution strategy either.
+  - Bazel will no longer gracefully restart workers that crashed /
+    quit, instead this triggers a build failure.
+  - All java resources are now compressed in android_binary APKs by
+    default.
+  - All java resources are now compressed in android_binary APKs by
+    default.
+  - android_ndk_repository now creates a cc_library
+    (@androidndk//:cpufeatures) for the cpufeatures library that is
+    bundled in the Android NDK. See
+    https://developer.android.com/ndk/guides/cpu-features.html for
+    more details.
+  - 'output_groups' and 'instrumented_files' cannot be specified in
+    DefaultInfo.
+  - You can increase the CPU reservation for tests by adding a
+    "cpu:<n>" (e.g. "cpu:4" for four cores) tag to their rule in a
+    BUILD file. This can be used if tests would otherwise overwhelm
+    your system if there's too much parallelism.
+  - Deprecate use_singlejar_for_proguard_libraryjars and force
+    behavior to always on.
+
 ## Release 0.4.5 (2017-03-16)
 
 ```
@@ -1096,3 +1302,4 @@
 Initial release.
 
 
+