tree b2539fdec97f1034332157202e0f415f664ede31
parent 94cc0985ea07a2d69ef07ac9d3a9943e094794f2
author Bazel Release System <noreply@google.com> 1649432735 +0200
committer Xudong Yang <wyv@google.com> 1649432735 +0200

Release 5.1.1 (2022-04-08)

Baseline: 8d66a4171baddcbe1569972f019e54130111202c

Cherry picks:

   + becd1494481b96d2bc08055d3d9d4d7968d9702e:
     Remote: Cache merkle trees
   + d7628e1b566be353fe7172241ac8f15d5f8e7ff5:
     Update DEFAULT_IOS_CPU for M1 arm64 simulator support
   + 80c56ff7b603fcfff02a5f97829a2a5935f360a0:
     Compile Apple tools as fat binaries if possible
   + 3c09f3438a966b49a7c1726022c898b390b3a6e5:
     Add protobuf as a well known module
   + 3a5b3606a6f5433467a5b49f0188c41411684bf5:
     Remote: Merge target-level exec_properties with
     --remote_default_exec_properties
   + 917e15ea408e1d3d25574edbb466b39cfbcb61fe:
     Add -no_uuid for hermetic macOS toolchain setup
   + f5cf8b076bc913dbe021104d5f6837fb4a6cd8b3:
     Remote: Fixes an issue when --experimental_remote_cache_async
     encounter flaky tests.
   + 77a002cce050e861fcc87c89acf7768aa5c97124:
     Remove DigestUtils.getDigestInExclusiveMode() now that SsdModule
     has …
   + 557a7e71eeb5396f2c87c909ddc025fde2678780:
     Fixes for the Starlark transition hash computation (#14251)
   + 34c71465f84fa780217926db2e8e5ca3d6d4568c:
     Do location expansion in copts of objc_library
   + 50274a9f714616d4735a560db7f617e53fb8d01b:
     [5.x] Remote: Add support for compression on gRPC cache (#14277)
   + 61bf2e5b5181cbe34a2f0d584053570943881804:
     Automated rollback of commit
     34c71465f84fa780217926db2e8e5ca3d6d4568c.
   + 79888fe7369479c398bafe064daa19a7ae30f710:
     Silence a zstd-jni GCC warning.
   + 063b5c9c2c09b4794010b9a169b44890ffc79ec4:
     Remote: Limit max number of gRPC connections by
     --remote_max_connections.
   + fd727ec96d861573dcbad3249d727a94eff84789:
     Do location expansion in copts of objc_library
   + 23d096931be9b7247eafa750999dd7feadde14c1:
     Fix _is_shared_library_extension_valid
   + 5cf1d6e1f78bc860fcd0e2e86eff6fe43ab4a5a2:
     Remove merging of java_outputs in JavaPluginInfo.
   + cea5f4f499aa832cf90c68898671869ce79d63f2:
     Cherrypick Bzlmod documentation (#14301)
   + 227e49e28e5122cddd6c4cb70686ff7bde3617ea:
     Format work requests according to ndjson spec
   + ae0a6c98d4f94abedbedb2d51c27de5febd7df67:
     Enable user_link_flags_feature for macosx cc_toolchain_config
   + 8c2c78cdc66cc9d5eb2cd59823c659892c1643a7:
     Remote: Use Action's salt field to differentiate cache across
     workspaces.
   + f94898915268be5670fb1e93a16c03e9b14d2a58:
     [5.x] Remote: Fix "file not found" error when remote cache is
     changed from enabled to disabled.  (#14321)
   + 3069ac4e33dcca6f3d1abf55940cdd764d03bdbf:
     Delete marker file before fetching an external repository
   + c05c6261cdb2cacb7c9881c255c0ada435ab5182:
     Remote: Fix file counting in merkletree.DirectoryTreeBuilder
   + d84f7998ef8f15e27376a0c8f25b320145c4ba9e:
     Fix remote spawn tests for remote_merkle_tree_cache=true
   + 59e16e944200555da377799aa0d9e8d0674d2e27:
     Show skipped tests as a warning
   + 76b3c242831f8e88835e3002a831a185a41fcc52:
     Build xcode-locator as a universal binary
   + aa52f2ddf9bab1ebd18e5431124061e813bfcd80:
     Exit collect_coverage.sh early if LCOV_MERGER is not set.
   + 4256d46327bad8638df91be1a5d4ef83b12b74c7:
     Automated rollback of commit
     d84f7998ef8f15e27376a0c8f25b320145c4ba9e.
   + dce24350befd08216b3910ae343670015444ff81:
     [apple] fix issues compiling C in objc_library for watchos/armv7k
   + bfc24139d93f8643686d91596ba347df2e01966a:
     5.x: Remote: Ignore blobs referenced in BEP if the generating
     action cannot be cached remotely. (#14389)
   + 5aef53a8884038f3c9f06e6dddb9372196253378:
     Remote: Don't blocking-get when acquiring gRPC connections.
     (#14420)
   + 005361c895da334beb873901e93aff06d180256e:
     Disable IncludeValidation for ObjC in bazel
   + d703b7b4f09fb3c389f99e52bac1f23930280b56:
     Update java_tools v11.6
   + 90965b072eb4a6dec8ff5b8abde3726732d37bdc:
     Stop remote blob upload if upload is complete. (#14467)
   + dc59d9e8f7937f2e317c042e8da8f97ba6b1237e:
     [5.x] Make remote BES uploader better (#14472)
   + 2edab739e1f61fe8813230b03396ca46f0790089:
     Avoid too verbose warnings in terminal when cache issues
   + 1160485192b5e6d95bcd426b55cc9a35fc6b8614:
     Rename --project_id to --bes_instance_name
   + c63d9ecbe5fcb5716a0be21d8fc781d7aa5bbc30:
     Automated rollback of commit
     bfdfa6ebfd21b388f1c91f512291c848e1a92a96.
   + b341802700484d11c775bf02d80f43ba3f33b218:
     [apple] support watchos_arm64 in toolchain
   + 43bcf80a3dfdc5ac89c1e4d615d6f29a495855fb:
     Disable implicitly collecting baseline coverage for toolchain
     targets.
   + 302971e1b3d803069ac949c0085c0d2a3916c8ab:
     Automated rollback of commit
     7d09b4a15985052670244c277e4357557b4d0039.
   + 62002024ca7012ffe0f4fc74ac20b5471513c8c8:
     Bzlmod: Starlarkify default attr values for TypeCheckedTags
   + 38117d491cbc4a5686e0bdb1e58f8946d96aed58:
     Fix build after rc4 cherrypicks (#14581)
   + 41feb616ae18e21fdba3868e4c298b0b83012f10:
     Release 5.0.0 (2022-01-19)
   + 486d153d1981c3f47129f675de20189667667fa7:
     Find runfiles in directories that are themselves runfiles
   + 0de7bb95022057e8b89334f44759cf6f950e131f:
     Don't resolve symlinks for --sandbox_base
   + 8b60c90f3641591b65c4e153113aea562f1fab94:
     Remove uses of -lstdc++ on darwin
   + 60f757c0831f9fbb2415fb0105f964201faa9fa0:
     Allow Label instances as keys in select (#14755)
   + 3836ad029f202ca13c64c9f07e4568ea8ab2d9a6:
     Remote: Only waits for background tasks from remote execution.
   + 8734ccf9847eafb7193388cd9c6fa78faa78283f:
     Add the default solib dir to the rpath for cc_imports with
     transitions
   + 9e16a6484e94c358aa77a6ed7b1ded3243b65e8f:
     Flip --experimental_worker_allow_json_protocol
   + fce7ea8d5e0facfc125ae7c37bfb4b9a7c586e40:
     Fix `ctx.fragments.apple.single_arch_cpu` returning incorrect
     cpu for tools when host cpu and exec cpu are different
   + 0c1d09e4dce4c3251c2be2c70d4575ec65b1d9d3:
     Propagate --experimental_cc_implementation_deps to host config
   + 1c3a2456c95fd19974a5b2bd33c5ebdb2b2277e4:
     Support select() on constraint_value for aliases.
   + 67a133b431ccece22b7dd9a72f0837cff77d4360:
     Improve documentation for select()
   + 5356fedd4b6079851b51db27077bf84c7bab16a4:
     Cherrypicks for experimental cc_shared_library (#14773)
   + ffdd633d7b9f21267f4f9759dd9833096dd4e3a2:
     [apple] support tvos_sim_arm64 in toolchain (#14779)
   + a58ddea50b2fd476d183e2e0c077ad6173039b89:
     Cherry pick win arm64 (#14794)
   + dc41a20bb045d221a43223a5db6b8b44cd8f1676:
     [5.1.0] cherrypick subpackages support (#14780)
   + 86e2db7d67ec52bfe11c1f517f650653cee3ea26:
     Add a helper method for rules to depend on the cpp toolchain
     type.
   + 6990c02644a71d5e7c95c9c234ecf39bb55c6ac4:
     UrlRewriter should be able to load credentials from .netrc
     (#14834)
   + 32d1606dac2fea730abe174c41870b7ee70ae041:
     Add "arch" struct field to repository_os
   + 2cfdceae971d09f50ceddc3d7ef723fb5f879957:
     [5.x] bzlmod: Add support for WORKSPACE.bzlmod (#14813)
   + c2ddbd1954af5baab63b93f2b055a410a27832c8:
     Ignore missing include directory in JDK distribution.
   + 16de03595e21f7bf31818e717505b23c953b3b7d:
     Fix bazel coverage false negative
   + 0c74741742301abcf67452a7f591daec1c3a7635:
     Remote: Postpone the block waiting in `afterCommand` to
     `BlockWaitingModule` (#14833)
   + 3297d9234e15515aa91cc887b3b12db7e1040b02:
     Switch to `ProcessHandle` for getting the PID (#14842)
   + a987b98ea0d6da2656c4115568ef9cbe8a164550:
     Fix uses of std++ on bsd
   + d184e4883bb7fc21de2f7aeea4304994de27e9ea:
     Remote: handle early return of compressed blobs uploads
   + 0b09e9e018c557da04c9f978d25a66d963cd6cb6:
     Add removeprefix/removesuffix to Starlark strings
   + d42ab0cfcce56b5e55c8bd94d0923d08758fdb5b:
     Fix default CPU for macOS and iOS (#14923)
   + cd24f39750d7b08f6f31c82d3a23cc329c7fc78e:
     Add paramfile support for def_parser, since in rare cases on
     Windows command line character limit was reached.
   + 0b1beefd1e7611dc9b9f559d00d8ff76aabb0f32:
     Normalize rpath entries to guard against missing default solib
     dir
   + 24e82426e689853b0d9a04e7b9b6f13e145cf2d6:
     Fix aggressive params file assumption
   + c45838bd3e51bcd0c8c3e1a9b4a0e55cdf4b4f59:
     Fix precompiled libs not in runfiles of cc_shared_library
     (#14943)
   + 764614e0f0287125269e7a92e909a44624bcb360:
     Bzlmod: Allow multiple `use_extension`s on the same extension
     (#14945)
   + fa761f84994f18db383fbe9aaea524e4385da13a:
     Fix typo in `apple_common.platform` docs
   + f7d8288bd7b16c7f2e010aa8ddc241cf2ba8e0d5:
     Yield a Proxy for addresses without protocol
   + 8cefb8bed4ac82df8640682517372a9249732352:
     Avoid merging URLs in HttpUtils
   + b4804807fc2c184cc36df9e69e472942c01941b8:
     Make protocOpts() public. (#14952)
   + 113eaca5862c48797654ae2a3acbb6e15d761485:
     Do not hide BulkTransferException messages when there were more
     than one exception
   + b1bf9d6c5f85fc4fda0dc48bc3d3e2fe26880867:
     merkle_tree_cache: change default size to 1000
   + f15e0c7224ecc5473d4972afc436e28df35c4e5a:
     Add --experimental_repository_cache_urls_as_default_canonical_id
     to help detect broken repository URLs (#14989)
   + f4214746fcd15f0ef8c4e747ef8e3edca9f112a5:
     Expose the logic to read user netrc file
   + b858ec39aebd7e586af5438aa2035db2adebf9a4:
     Correct cpu and os values of `local_config_cc_toolchains` targets
   + 5e79972c05d89280f0cf1fa620f807366847bac6:
     Expose CoverageOutputGenerator on a Fragment (#14997)
   + 78f03110e0dab42f37e427fd524e72706e036d74:
     Correct error runfiles cc_shared_library (#14998)
   + 7937dd14c3c632ffcfaea9073d5dec6dcac93845:
     [5.1] Adding Starlark dependencies to the package //external
     (#14991)
   + a73aa12be65454ac8cfb5a8f3e056c420402f997:
     Remote: Fix crashes with InterruptedException when using http
     cache.
   + f8707c07f153ac4ac2ec4b210321f1a16343006d:
     Account for interface libraries in cc_shared_library
   + a570f5fdb1618a6c272d18bebaa712d3b2af3975:
     Fix coverage runfiles directory issue
   + 95de355e4524a6339c0e807b60d333c36c40bdc7:
     Do not validate input-only settings in transitions (#15048)
   + 71747ccc9d0032a865854613329362563c0574df:
     Filter out system headers on macOS.
   + cb6500a9ce648a02154dca8d05a978ce9b10c4b4:
     Update Bazel bootstrap documentation and remove obsolete flags.
     (#15065)
   + 4c031d1030afb1cb48c7e6d71f83cc99fea607c1:
     [5.1] Undocument --bes_best_effort (#15066)
   + 267142f3dc6b8d32b07beb21e3b4ba6f471a69d8:
     Fix conflicting actions error when specifying
     --host_macos_minimum_os (#15068)
   + f1923627e85b1c1d60bcd928f90f116c3ade7a3a:
     [5.1] Remote: Action should not be successful and cached if
     outputs were not created (#15071)
   + 00d74ff737cccd60305ee58d85313556a077152a:
     Support decompressing zstd tar archives for repository rules.
   + f5857830bb68bd05ffc257506575ed37a8128933:
     Remote: Don't check TreeArtifact output
   + efb2b80953983dce499d453a9f55a74ffaf8c42d:
     osx_cc_wrapper: Only expand existing response files
   + c771c43b870fb8618db7bdab6725ab40cac4976d:
     Remote: Fix crashes by InterruptedException when dynamic
     execution is enabled. (#15091)
   + 3785677cc84fc4024fda85575c05efbde5d512fc:
     Use python3 on macOS
   + 815d9e499a32fd4d87525ac0c698c293cf26433d:
     Release 5.1.0 (2022-03-24)
   + 1fbb69e366034484887e00c6006c7b79508765ed:
     Prepare 5.1.1 release
   + df153df9656e0e197f67622bb11f7d77e19238a0:
     Fix CODEOWNERS syntax
   + d418245e8cdd6eef9c6ba326f96fd4aabd046fe2:
     Remote: Don't check declared outputs for failed action (#15181)
   + ffa2a0b197d1f4ffe2031fd0b1b40da9d126793b:
     Upgrade abseil version to the latest (#15183)
   + 8ae15207ecf0be3f45b8cd249077a2c1896e2b09:
     Fix windows_export_all_symbols in cc_shared_library (#15190)
   + 94cc0985ea07a2d69ef07ac9d3a9943e094794f2:
     Support ZIP files with total number of disks = 0 (#15200)

Important changes:

  - alias() can now select() directly on constraint_value()

    Fixes https://github.com/bazelbuild/bazel/issues/13047.

    Closes #14310.
  - Fixed an issue where Bazel could erroneously report a test passes
    in coverage mode without actually running the test.
  - Make protocOpts() publicly accessible.
  - Add coverage configuration fragment, used to expose
    output_generator label.
  - Bazel now no longer includes system headers on macOS in coverage
    reports (#14969).

    Closes #14971.

This release contains contributions from many people at Google, as well as amberdixon, Benjamin Peterson, Brentley Jones, Dan Fleming, Danny Wolf, Fabian Meumertzheim, Keith Smiley, Niyas Sait, Noa Resare, Oliver Eikemeier, oquenchil, Philipp Schrader, Xùdōng Yáng, Yannic.
