diff --git a/.bazelci/postsubmit.yml b/.bazelci/postsubmit.yml index e4d5e07eadbfef..047fd07308fc4d 100644 --- a/.bazelci/postsubmit.yml +++ b/.bazelci/postsubmit.yml @@ -55,6 +55,13 @@ tasks: - "-//src/test/shell/bazel:bazel_coverage_cc_released_test_gcc" - "-//src/test/shell/bazel:bazel_coverage_cc_head_test_gcc" - "-//src/test/shell/bazel:bazel_coverage_sh_test" + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -80,6 +87,7 @@ tasks: - "--sandbox_writable_path=$HOME/bazeltest" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base" - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external" + - "--test_tag_filters=-no_1804" # Configure and enable tests that require access to the network. - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80" test_targets: @@ -95,6 +103,13 @@ tasks: - "//tools/python/..." # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 - "-//src/java_tools/import_deps_checker/..." + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -124,6 +139,7 @@ tasks: - "--sandbox_writable_path=$HOME/bazeltest" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base" - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external" + - "--test_tag_filters=-no_1804" test_targets: - "//src/test/shell/bazel:cc_integration_test" include_json_profile: @@ -166,6 +182,13 @@ tasks: - "//tools/python/..." # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 - "-//src/java_tools/import_deps_checker/..." + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -217,10 +240,13 @@ tasks: - "-//src/test/shell/bazel/apple:bazel_apple_test" # https://github.com/bazelbuild/bazel/issues/17408 - "-//src/test/shell/bazel/apple:bazel_objc_test" - # https://github.com/bazelbuild/bazel/issues/16526#issuecomment-1415858550 + # https://github.com/bazelbuild/bazel/issues/18776 - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" # https://github.com/bazelbuild/bazel/issues/17410 - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest" # https://github.com/bazelbuild/bazel/issues/17411 @@ -274,7 +300,7 @@ tasks: - "-//src/test/shell/bazel:bazel_cc_code_coverage_test" # MacOS does not have cgroups so it can't support hardened sandbox - "-//src/test/shell/integration:bazel_hardened_sandboxed_worker_test" - # https://github.com/bazelbuild/bazel/issues/16521 + # https://github.com/bazelbuild/bazel/issues/16521 & https://github.com/bazelbuild/bazel/issues/18776 - "-//src/test/shell/bazel/android/..." - "-//src/tools/android/java/com/google/devtools/build/android/..." - "-//src/test/java/com/google/devtools/build/android/dexer:AllTests" @@ -287,8 +313,6 @@ tasks: - "-//src/test/java/com/google/devtools/build/lib/skyframe/rewinding:RewindingTest" - "-//src/test/java/com/google/devtools/build/lib/buildtool:MiscAnalysisTest" - "-//src/test/java/com/google/devtools/build/lib/rules/objc:ObjcRulesTests" - # https://github.com/bazelbuild/bazel/issues/16975 - - "-//scripts/docs:rewriter_test" # https://github.com/bazelbuild/bazel/issues/17007 - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest" include_json_profile: @@ -316,6 +340,7 @@ tasks: - "--host_copt=-w" - "--test_tag_filters=-no_windows,-slow" - "--test_env=JAVA_HOME" + - "--test_env=BAZEL_VC" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest_install_base" - "--test_env=TEST_REPOSITORY_HOME=C:/b/bazeltest_external" test_targets: @@ -379,6 +404,7 @@ tasks: - "--experimental_remote_download_outputs=minimal" - "--experimental_inmemory_jdeps_files" - "--experimental_inmemory_dotd_files" + - "--test_tag_filters=-no_1804" test_targets: - "//scripts/..." - "//src/java_tools/..." @@ -406,6 +432,13 @@ tasks: - "-//src/test/py/bazel:bazel_repo_mapping_test" - "-//src/test/py/bazel:bazel_yanked_versions_test" - "-//src/test/shell/bazel:verify_workspace" + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index b45ef7fd8962fe..fe30ced7d83907 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -50,6 +50,7 @@ tasks: - "//third_party/ijar/..." - "//tools/android/..." - "//tools/aquery_differ/..." + - "//tools/compliance/..." - "//tools/python/..." # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 - "-//src/java_tools/buildjar/..." @@ -59,6 +60,13 @@ tasks: - "-//src/test/shell/bazel:bazel_coverage_cc_released_test_gcc" - "-//src/test/shell/bazel:bazel_coverage_cc_head_test_gcc" - "-//src/test/shell/bazel:bazel_coverage_sh_test" + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -84,6 +92,7 @@ tasks: - "--sandbox_writable_path=$HOME/bazeltest" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base" - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external" + - "--test_tag_filters=-no_1804" # Configure and enable tests that require access to the network. - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80" test_targets: @@ -100,6 +109,13 @@ tasks: - "//tools/python/..." # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 - "-//src/java_tools/import_deps_checker/..." + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -128,6 +144,7 @@ tasks: - "--sandbox_writable_path=$HOME/bazeltest" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base" - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external" + - "--test_tag_filters=-no_1804" test_targets: - "//src/test/shell/bazel:cc_integration_test" include_json_profile: @@ -171,6 +188,13 @@ tasks: - "//tools/python/..." # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 - "-//src/java_tools/import_deps_checker/..." + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test @@ -225,10 +249,13 @@ tasks: - "-//src/test/shell/bazel/apple:bazel_apple_test" # https://github.com/bazelbuild/bazel/issues/17408 - "-//src/test/shell/bazel/apple:bazel_objc_test" - # https://github.com/bazelbuild/bazel/issues/16526#issuecomment-1415858550 + # https://github.com/bazelbuild/bazel/issues/18776 - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" # https://github.com/bazelbuild/bazel/issues/17410 - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest" # https://github.com/bazelbuild/bazel/issues/17411 @@ -285,7 +312,7 @@ tasks: - "-//src/test/shell/bazel:bazel_cc_code_coverage_test" # MacOS does not have cgroups so it can't support hardened sandbox - "-//src/test/shell/integration:bazel_hardened_sandboxed_worker_test" - # https://github.com/bazelbuild/bazel/issues/16521 + # https://github.com/bazelbuild/bazel/issues/16521 & https://github.com/bazelbuild/bazel/issues/18776 - "-//src/test/shell/bazel/android/..." - "-//src/tools/android/java/com/google/devtools/build/android/..." - "-//src/test/java/com/google/devtools/build/android/dexer:AllTests" @@ -298,19 +325,72 @@ tasks: - "-//src/test/java/com/google/devtools/build/lib/skyframe/rewinding:RewindingTest" - "-//src/test/java/com/google/devtools/build/lib/buildtool:MiscAnalysisTest" - "-//src/test/java/com/google/devtools/build/lib/rules/objc:ObjcRulesTests" - # https://github.com/bazelbuild/bazel/issues/16975 - - "-//scripts/docs:rewriter_test" # https://github.com/bazelbuild/bazel/issues/17007 - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest" + # Disable the most time-consuming tests on macOS arm64 platform in presubmit. + # To run any of the following test in presubmit, just comment out the corresponding line. + # TODO(pcloudy): Re-enable when Apple Silicon machine waiting time is no longer the major + # bottleneck for presubmit. + - "-//src/test/shell/bazel:bazel_determinism_test" + - "-//src/test/shell/bazel:jdeps_test" + - "-//src/test/shell/bazel:starlark_git_repository_test" + - "-//src/test/shell/bazel:bazel_bootstrap_distfile_test" + - "-//src/test/shell/bazel:bazel_bootstrap_distfile_tar_test" + - "-//src/test/shell/integration:bazel_json_worker_test" + - "-//src/test/py/bazel:runfiles_test" + - "-//src/test/py/bazel:launcher_test" + - "-//src/test/py/bazel:bazel_module_test" + - "-//src/test/shell/bazel:bazel_java_test_jdk11_toolchain_head" + - "-//src/test/shell/integration:target_compatible_with_test" + - "-//src/test/py/bazel:py_test" + - "-//src/test/py/bazel:bzlmod_query_test" + - "-//src/test/py/bazel:cc_import_test" + - "-//src/test/shell/bazel/remote:build_without_the_bytes_test" + - "-//src/test/shell/bazel:bazel_coverage_java_test" + - "-//src/test/py/bazel:bazel_yanked_versions_test" + - "-//src/test/shell/bazel:bazel_coverage_java_jdk17_toolchain_head_test" + - "-//src/test/shell/bazel:bazel_proto_library_test" + - "-//src/test/shell/bazel:bazel_java_tools_test" + - "-//src/test/shell/integration:build_event_stream_test" + - "-//src/test/py/bazel:bazel_overrides_test" + - "-//src/test/shell/bazel:cc_integration_test" + - "-//src/test/shell/bazel:bazel_java_test" + - "-//src/test/java/com/google/devtools/build/lib/rules/config:ConfigRulesTests" + - "-//src/test/shell/bazel:bazel_java_test_jdk17_toolchain_head" + - "-//src/test/shell/integration:bazel_worker_test" + - "-//src/test/shell/bazel:tags_propagation_native_test" + - "-//src/test/shell/bazel:bazel_coverage_java_jdk11_toolchain_head_test" + - "-//src/test/shell/integration:bazel_sandboxed_worker_test" + - "-//src/test/py/bazel:bazel_repo_mapping_test" + - "-//src/test/shell/bazel:bazel_coverage_java_jdk11_toolchain_released_test" + - "-//src/test/py/bazel:bazel_workspace_test" + - "-//src/test/shell/bazel:execroot_test" + - "-//src/test/shell/bazel:starlark_repository_test" + - "-//src/test/shell/bazel:bazel_coverage_java_jdk17_toolchain_released_test" + - "-//src/test/shell/bazel/remote:remote_execution_test" + - "-//src/test/shell/integration:toolchain_test" + - "-//src/test/shell/bazel:bazel_test_test" + - "-//src/test/shell/integration:test_test" + - "-//src/test/shell/bazel:bazel_execlog_test" + - "-//src/test/shell/integration:modify_execution_info_test" + - "-//src/test/shell/bazel:external_integration_test" + - "-//src/test/py/bazel:bazel_external_repository_test" + - "-//src/test/shell/bazel:bazel_workspaces_test" + - "-//src/test/shell/integration:client_test" + - "-//src/test/shell/bazel:workspace_resolved_test" + - "-//src/test/shell/bazel:bazel_repository_cache_test" + - "-//src/test/shell/integration:aquery_test" + - "-//src/test/shell/integration:py_args_escaping_test" include_json_profile: - build - test windows: shards: 4 - batch_commands: - - powershell -Command "(Get-Content WORKSPACE) -Replace '# android_', 'android_' | Set-Content WORKSPACE" + setup: - mkdir C:\b - mklink /J C:\b\bazeltest_external %OUTPUT_BASE:/=\%\external + batch_commands: + - powershell -Command "(Get-Content WORKSPACE) -Replace '# android_', 'android_' | Set-Content WORKSPACE" build_flags: - "--copt=-w" - "--host_copt=-w" @@ -327,6 +407,7 @@ tasks: - "--host_copt=-w" - "--test_tag_filters=-no_windows,-slow" - "--test_env=JAVA_HOME" + - "--test_env=BAZEL_VC" - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest_install_base" - "--test_env=TEST_REPOSITORY_HOME=C:/b/bazeltest_external" test_targets: @@ -392,6 +473,7 @@ tasks: - "--experimental_remote_cache_async" - "--experimental_remote_merkle_tree_cache" - "--remote_download_minimal" + - "--test_tag_filters=-no_1804" test_targets: - "//scripts/..." - "//src/java_tools/..." @@ -420,6 +502,16 @@ tasks: - "-//src/test/py/bazel:bazel_repo_mapping_test" - "-//src/test/py/bazel:bazel_yanked_versions_test" - "-//src/test/shell/bazel:verify_workspace" + # Flaky on rbe_ubuntu1804 + # https://github.com/bazelbuild/continuous-integration/issues/1631 + - "-//src/test/shell/bazel:bazel_sandboxing_networking_test" + # https://github.com/bazelbuild/bazel/issues/18776 + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms" + - "-//src/test/shell/bazel/android:aapt_integration_test" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools" + - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms" include_json_profile: - build - test diff --git a/.bazelrc b/.bazelrc index 2d6f29519d3fb1..a0434ae8a488bb 100644 --- a/.bazelrc +++ b/.bazelrc @@ -25,7 +25,7 @@ build:ubuntu1804_java11 --config=remote_shared # Alias build:remote --config=ubuntu1804_java11 -build:macos --macos_minimum_os=10.10 +build:macos --macos_minimum_os=10.11 # Enable Bzlmod build:bzlmod --enable_bzlmod diff --git a/.bazelversion b/.bazelversion index 5e3254243a3b27..024b066c0bb7a9 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -6.1.2 +6.2.1 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5599d63a4c7e46..335df6b24bd7bb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -46,6 +46,17 @@ body: label: > What's the output of `git remote get-url origin; git rev-parse master; git rev-parse HEAD` ? render: text + - type: textarea + id: bisect + attributes: + label: > + Is this a regression? If yes, please try to identify the Bazel commit where the bug was + introduced. + description: > + If the problem is specific to the most recent release or the Bazel@HEAD version and it + doesn't occur in earlier versions, you can use the `bazelisk --bisect=..` + command to identify the specific version or commit where the issue was introduced. For more + information, visit https://github.com/bazelbuild/bazelisk#--bisect. - type: textarea id: relevant-info attributes: diff --git a/.github/ISSUE_TEMPLATE/mirror_request.yml b/.github/ISSUE_TEMPLATE/mirror_request.yml index 2f315bad771969..5521cf18d9f937 100644 --- a/.github/ISSUE_TEMPLATE/mirror_request.yml +++ b/.github/ISSUE_TEMPLATE/mirror_request.yml @@ -9,12 +9,11 @@ body: - type: markdown attributes: value: > - **Attention:** if the archive you're trying to mirror is a GitHub release archive, - please use URLs of the form `https://github.com/$USER/$REPO/archive/refs/tags/$TAG`, - instead of the form without the `refs/tags/` part. The latter is *not* guaranteed to - have a stable hash (see - https://github.com/bazel-contrib/SIG-rules-authors/issues/11#issuecomment-1029861300 - for more details). + **Attention:** if the archive you're trying to mirror is from GitHub, + please use URLs in the form of `https://github.com/$USER/$REPO/releases/download/...` if available. + If you are the project maintainer, you should create and upload such an release archive. + GitHub doesn't guarantee a stable checksum of source archives in the form of `https://github.com///archive/...`, which are generated on demand. + Check [GitHub Archive Checksum Outage](https://blog.bazel.build/2023/02/15/github-archive-checksum.html) for more details. - type: textarea id: urls attributes: diff --git a/.github/labeler.yml b/.github/labeler.yml index 8f07168ae39934..45f60bce5965dd 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -37,6 +37,7 @@ team-Rules-Java: team-Android: - src/tools/android/java/com/google/devtools/build/android/**/* - src/test/java/com/google/devtools/build/android/**/* +- src/test/shell/bazel/android/**/* team-Configurability: - src/main/java/com/google/devtools/build/lib/analysis/**/* diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f228b5a6e15a95..2a6ab1c0048c94 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -2,7 +2,7 @@ name: "PR Labeler" on: pull_request_target: - types: ["opened", "ready_for_review"] + types: ["opened", "reopened", "ready_for_review"] permissions: contents: read diff --git a/.github/workflows/remove-labels.yml b/.github/workflows/remove-labels.yml new file mode 100644 index 00000000000000..3cf55784860e22 --- /dev/null +++ b/.github/workflows/remove-labels.yml @@ -0,0 +1,23 @@ +name: Remove PR Labels + +on: + pull_request_target: + types: ["closed"] + +jobs: + remove-label: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@6b3083af2869dc3314a0257a42f4af696cc79ba3 # v2.3.1 + with: + egress-policy: audit + + - uses: actions-ecosystem/action-remove-labels@v1 + with: + labels: | + awaiting-pr-merge + awaiting-review \ No newline at end of file diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 5f9e3af7154746..5fcb5010d3c568 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -31,13 +31,13 @@ jobs: uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5.2.1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-issue-stale: 775 - days-before-pr-stale: 775 - days-before-issue-close: 14 - days-before-pr-close: 14 + days-before-issue-stale: 430 + days-before-pr-stale: 430 + days-before-issue-close: 90 + days-before-pr-close: 90 stale-issue-message: > Thank you for contributing to the Bazel repository! - This issue has been marked as stale since it has not had any activity in the last 2+ years. It will be closed in the next 14 + This issue has been marked as stale since it has not had any activity in the last 1+ years. It will be closed in the next 90 days unless any other activity occurs or one of the following labels is added: "not stale", "awaiting-bazeler". Please reach out to the triage team (`@bazelbuild/triage`) if you think this issue is still relevant or you are interested in getting the issue resolved. @@ -46,18 +46,18 @@ jobs: to the triage team (`@bazelbuild/triage`). Thanks! stale-pr-message: > Thank you for contributing to the Bazel repository! - This pull request has been marked as stale since it has not had any activity in the last 2+ years. It will be closed in the next - 14 days unless any other activity occurs or one of the following labels is added: "not stale", "awaiting-review", "awaiting-PR-merge". + This pull request has been marked as stale since it has not had any activity in the last 1+ years. It will be closed in the next + 90 days unless any other activity occurs or one of the following labels is added: "not stale", "awaiting-review", "awaiting-PR-merge". Please reach out to the triage team (`@bazelbuild/triage`) if you think this PR is still relevant or you are interested in getting the PR merged. close-pr-message: > This pull request has been automatically closed due to inactivity. If you're still interested in pursuing this, please reach out to the triage team (`@bazelbuild/triage`). Thanks! stale-issue-label: 'stale' - exempt-issue-labels: 'not stale,awaiting-bazeler,untriaged,P0,P1' + exempt-issue-labels: 'not stale,awaiting-bazeler,untriaged,P0,P1,P2,good first issue,help wanted' close-issue-reason: "not_planned" stale-pr-label: 'stale' - exempt-pr-labels: 'not stale,awaiting-review,awaiting-PR-merge,P0,P1' + exempt-pr-labels: 'not stale,awaiting-review,awaiting-PR-merge,P0,P1,P2' exempt-draft-pr: true operations-per-run: 500 ascending: true diff --git a/BUILD b/BUILD index b172f019c53780..84c15b67735e6e 100644 --- a/BUILD +++ b/BUILD @@ -36,11 +36,14 @@ filegroup( "//scripts:srcs", "//site:srcs", "//src:srcs", - "//tools:srcs", - "//third_party:srcs", - "//src/main/starlark/tests/builtins_bzl:srcs", "//src/main/java/com/google/devtools/build/docgen/release:srcs", - ] + glob([".bazelci/*"]) + [".bazelrc", ".bazelversion"], + "//src/main/starlark/tests/builtins_bzl:srcs", + "//third_party:srcs", + "//tools:srcs", + ] + glob([".bazelci/*"]) + [ + ".bazelrc", + ".bazelversion", + ], applicable_licenses = ["@io_bazel//:license"], visibility = ["//src/test/shell/bazel:__pkg__"], ) @@ -161,6 +164,13 @@ pkg_tar( visibility = ["//:__subpackages__"], ) +pkg_tar( + name = "rules_java-srcs", + srcs = ["@rules_java//:distribution"], + strip_prefix = "external", + visibility = ["//:__subpackages__"], +) + # The @maven repository is created by maven_install from rules_jvm_external. # `@maven//:srcs` contains all jar files downloaded and BUILD files created by maven_install. pkg_tar( @@ -170,6 +180,11 @@ pkg_tar( visibility = ["//:__subpackages__"], ) +exports_files( + ["maven_install.json"], + visibility = ["//tools/compliance:__pkg__"], +) + py_binary( name = "combine_distfiles", srcs = ["combine_distfiles.py"], @@ -183,6 +198,7 @@ genrule( ":bazel-srcs", ":bootstrap-jars", ":platforms-srcs", + ":rules_java-srcs", ":maven-srcs", "//src:derived_java_srcs", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:bootstrap_autocodec.tar", @@ -201,6 +217,7 @@ genrule( ":bazel-srcs", ":bootstrap-jars", ":platforms-srcs", + ":rules_java-srcs", ":maven-srcs", "//src:derived_java_srcs", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:bootstrap_autocodec.tar", diff --git a/CHANGELOG.md b/CHANGELOG.md index dcd42483001c34..71ac588b5c3aaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,906 @@ +## Release 7.0.0-pre.20230530.3 (2023-06-09) + +``` +Baseline: 67446d625e4daafadcb5918a88ed52f517a8871f + +Cherry picks: + + + 4344a0358f44c0290f85f8d90dede5824593ce77: + Automated rollback of commit + 00a4fefe594069d47d1bde99b28c6b8dcca0a7c1. +``` + +Incompatible changes: + + - `--incompatible_check_sharding_support` is enabled by default. + Sharded tests with test runners that do not properly advertise + support for test sharding will fail. Refer to + https://github.com/bazelbuild/bazel/issues/18339 for migration + advice. + +Important changes: + + - Options specified on the pseudo-command `common` in `.rc` files + are now ignored by commands that do not support them as long as + they are valid options for *any* Bazel command. Previously, + commands that did not support all options given for `common` + would fail to run. These previous semantics of `common` are now + available via the new `always` pseudo-command. + - the 'default' param of json.decode can now be used as a keyword + parameter. + - As a transitional step in a larger refactoring, rule transitions + are applied twice. Once during dependency resolution and once + right before + analysis of those rules. After the refactoring is complete, rule + transitions + will be applied only once. + +This release contains contributions from many people at Google, as well as Fabian Meumertzheim, Jimm chja20, Keith Smiley. + +## Release 7.0.0-pre.20230524.3 (2023-06-05) + +``` +Baseline: ea2d5043113a34ce341c53168141f13f14053240 + +Cherry picks: + + + 2e34965242280d861f688628ed2bbc5209350d9f: + Have `Package#defaultPackageMetadata` be in the same order that + the `package.default_applicable_licenses` list was in. +``` + +Initial release. + +## Release 6.2.1 (2023-06-02) + +``` +Baseline: 758b44dab552f31b378874b5bf4c0609bfef6f5d + +Release Notes: + ++ Automatic code cleanup. (#18504) ++ Update relnotes scripts (#18503) ++ Fix https://github.com/bazelbuild/bazel/issues/18493. (#18512) ++ Fix formatting of release notes (#18533) ++ Use extension rather than local names in ModuleExtensionMetadata (#18535) + +Acknowledgements: + +This release contains contributions from many people at Google, as well as Fabian Meumertzheim, Pavan Singh. +``` + +## Release 7.0.0-pre.20230517.4 (2023-05-26) + +``` +Baseline: 267ac1f14f733a41380c1f70d095f096b8798c6b + +Cherry picks: + + + 98d5d5f6980ec8513dc5c0ee95fcabe3b80beb47: + Download outputs that were not downloaded during spawn execution + in `finalizeAction`. + + 02853f888cd8cea6a0e06b0ca417e0470de2cec0: + Fix non-determinism in the `FailureDetail` produced for a + package with multiple label crosses subpackage boundary errors. +``` + +Incompatible changes: + + - This has the side effect of changing the message on unsuccessful + builds from + ``` + FAILED: Build did NOT complete successfully (0 packages loaded) + ``` + to + ``` + ERROR: Build did NOT complete successfully + ``` + - Bazel no longer increases the delay between progress updates when + there is no cursor control. + - This has the side effect of changing the message on unsuccessful + builds from + ``` + FAILED: Build did NOT complete successfully (0 packages loaded) + ``` + to + ``` + ERROR: Build did NOT complete successfully + ``` + - the --experimental_async_execution flag is now a no-op. + - --experimental_replay_action_out_err is not a no-op. + - `cquery --output=files` also outputs source files. + - `--incompatible_strict_conflict_checks` is flipped to true. See + https://github.com/bazelbuild/bazel/issues/16729 for details. + - `--incompatible_strict_conflict_checks` is flipped to true. See + https://github.com/bazelbuild/bazel/issues/16729 for details. + - `--incompatible_always_include_files_in_data` is flipped to true. + See https://github.com/bazelbuild/bazel/issues/16654 for details. + - This changes the behavior of Python version in exec/host + configuration. Mitigation is to set Python version on the targets. + - When multiple --deleted_packages options are passed on the + command line, they will be concatenated instead of the latest one + taking effect. + - This has the side effect of changing the message on unsuccessful + builds from + - JSON profile: Use doubles instead of strings for counter series. + - query --output=proto --order_output=deps now returns targets in + topological order (previously there was no ordering). + - --experimental_build_transitive_python_runfiles is flipped to + false. See #16303 for details + - --incompatible_python_disable_py2 is flipped to true. See #17293 + for details. + - When remote cache evicts blobs, Bazel will exit with code 39. + - `--features` only applies to targets built in the target + configuration, and `--host_features` is used for the host / exec + configuration (gated behind `--incompatible_use_host_features`) + - `--incompatible_strict_conflict_checks` is flipped to true. See + https://github.com/bazelbuild/bazel/issues/16729 for details. + - Bazel's local CPU resource on Linux is now container aware. Use + `--local_cpu_resources`, `--loading_phase_threads` or `--jobs` to + override. + - `copy_from_rule` is exec_groups is deprecated + (https://github.com/bazelbuild/bazel/issues/17668). + - --legacy_bazel_java_test is now a no-op + - --legacy_bazel_java_test is now a no-op + - --legacy_bazel_java_test is now a no-op + - `--experimental_execution_graph_log` no longer exists. Current + users that want local logs need to pass + `--experimental_enable_execution_graph_log + --experimental_execution_graph_log_path=/some/local/path`. + Current users that want logs uploaded to BEP need to pass + `--experimental_enable_execution_graph_log + --experimental_stream_log_file_uploads`. + - Remove 'darwin' as a CPU value, use 'darwin_x86_64' instead + - Remove high priority workers functionality from blaze. + - Renamed PackageMetrics proto message to PackageLoadMetrics. The + formats should be wire compatible. + +New features: + + - The `aquery` and `cquery` commands now respect the + `--query_file` flag just like the `query` command. + - --experimental_repository_disable_download is now promoted to + stable and is also available under the name + --repository_disable_download . + +Important changes: + + - The new path variable `$(rlocationpath ...)` and its plural form + `$(rlocationpaths ...)` can be used to expand labels to the paths + accepted by the `Rlocation` function of runfiles libraries. This + is the preferred way to access data dependencies at runtime and + works on all platforms, even when runfiles are not enabled (e.g., + on Windows by default). + - Starlark `print()` statements are now emitted iff the line of + code is executed. They are no longer replayed on subsequent + invocations unless the Starlark code is re-executed. + Additionally, multiple identical `print()` statements (same + string from the same line of code, e.g. from a loop) are all + emitted and no longer deduplicated. + - Fixes a bug where some compilation flags would not be applied to + a cc_test + - removed outdated ctx.host_fragments + - removed outdated ctx.host_configuration + - Now that the host configuration is finished, `genrule` should + prefer the use of `tools` and stop using `exec_tools`. + - Added a `native.package_relative_label()` function, which + converts a label string to a Label object in the context of the + calling package, in contrast to `Label()`, which does so in the + context of the current .bzl file. Both functions now also accept + relative labels such as `:foo`, and are idempotent. + - Update Android manifest merger to v30.1.3, and also drop support + for legacy (pre-D8) desugaring. + - Adds coverage metric support to android_local_test + - Correctly encode double value positive infinity as "inf" instead + of "+inf" for textprotos. + - Add --use_target_platform_for_tests which uses the target + platform for executing tests instead of the execution platform. + - Custom C++ rules on Windows calling + cc_common.create_linking_context_from_compilation_outputs should + review whether each target of the rule type should produce a + dynamic library since a condition which blocked their creation + has been moved to the rules from behind the API. + - Add flag `--experimental_remote_cache_ttl` and set the default + value to 3 hours. + - making --incompatible_use_platforms_repo_for_constraints do + nothing. Using constraints from @bazel_tools//platforms with or + without the flag will throw error with message "Constraints from + @bazel_tools//platforms have been removed. Please use constraints + from @platforms repository embedded in Bazel, or preferably + declare dependency on https://github.com/bazelbuild/platforms" + - Fixed an issue where WORKSPACE and WORKSPACE-loaded .bzl files + couldn't see the Bzlmod root module's mappings when Bzlmod is + enabled. + - Subsequent settings of --extra_execution_platforms now override + previous settings, instead of adding them to a list. If you + currently set --extra_execution_platforms more than once, please + migrate by passing a list of values to + --extra_execution_platforms instead so that earlier values aren't + overwritten. + - @bazel_tools//config:common_settings.bzl has been removed. + Use @bazel_skylib//rules:common_settings.bzl instead. + - cc_shared_library is no longer experimental, see + https://github.com/bazelbuild/bazel/issues/16709 for details + - The flag `--distinct_host_configuration` is removed. It has been + a no-op since Bazel 6.0.0. + - Added `native.module_name()` and `native.module_version()` to + allow BUILD macro authors to acquire information about which + Bazel module the current repo is associated with. + - Add `--skip_incompatible_explicit_targets` option + - Remove 'darwin' as a CPU value, use 'darwin_x86_64' instead + - cc_test can now be configured by using a native.toolchain(). + - `@foo` labels can now be used on the command line as the + top-level target (that is, `bazel build @foo` now works). + Double-dot syntax is now forbidden (`bazel build ../foo` will no + longer work). + - The location of rules that explicitly specify `generator_name` + and/or `generator_function` attributes (typically because they + are incidentally copied from `native.existing_rule()`) is now the + top-level call in the `BUILD` file, which is consistent with + rules that do not explicitly specify these attributes. + - Warnings (most notably those associated with the `deprecation` + rule attribute) are no longer replayed on subsequent invocations + unless the target in question is re-analyzed. Warnings are purely + informational, so this change has no bearing on the correctness + of the build. Downstream tests that break due to this change + should update their expectations. + - `--experimental_remote_build_event_upload` has been renamed to + `--remote_build_event_upload` + - [Breaking change] platform, constraint_setting, and + constraint_value can no longer take an applicable_licenses value. + Remediation is to remove the attribute and rely on the package + level default. + - `--experimental_action_cache_store_output_metadata` has been + renamed to `--action_cache_store_output_metadata` + - Changed the default value for `--remote_build_event_upload` to + `minimal`. + - `--experimental_remote_cache_compression` has been renamed to + `--remote_cache_compression` + - The REPO.bazel and MODULE.bazel files are now also considered + workspace boundary markers. + - Added a new `max_compatibility_level` attribute to the + `bazel_dep` directive, which allows version selection to upgrade + a dependency up to the specified compatibility level. + - `--experimental_remote_grpc_log` has been renamed to + `--remote_grpc_log` + - `--incompatible_remote_build_event_upload_respect_no_cache` is + now a no-op. + - json.decode now takes an optional `default` positional parameter; + if this parameter is specified and decoding fails, json.decode + will return + the `default` value instead of failing Starlark evaluation. + - Overrides specified by non-root modules no longer cause an error, + and are silently ignored instead. They were originally treated as + an error to allow for the future possibility of overrides in the + transitive dependency graph working together; but we've deemed + that infeasible (and even if it was, it'd be so complicated and + confusing to users that it would not be a good addition). + - `applicable_licenses` is no longer allowed on the `platform` rule. + Additionally, `default_package_metadata` from any `package` rule + will not be applied. + +This release contains contributions from many people at Google, as well as Adam Lavin, Alessandro Patti, Alex Eagle, AlexTereshenkov, Amanda L Martin, Andreas Herrmann, Andy Hamon, Ankit Agarwal, Ankush Goyal, Anthony Ter-Saakov, Artem Zinnatullin, aryeh, Austin Schuh, Benjamin Lee, Benjamin Peterson, Benjamin Peterson, Benjamin Sigonneau, Ben Lee, Brentley Jones, Cameron Martin, Chirag Ramani, Chirag Ramani, Chris Sauer, Christopher Peterson Sauer, Christopher Rydell, Christopher Sauer, Daniel Grunwald, Daniel KT, Daniel Wagner-Hall, David Ostrovsky, Dimi Shahbaz, eareilg, Ed Schouten, Emil Kattainen, Ezekiel Warren, Fabian Meumertzheim, Fabian Meumertzheim, Fahrzin Hemmati, Fahrzin Hemmati, Gaspare Vitta, George Gensure, Greg, Greg Magolan, Halil Sener, Hao Yuan, hvadehra, hvd, Ivan Golub, Jack Dai, James Ma, Jasper, Jeff Hodges, Jeremy Volkman, Joel Jeske, John Hinnegan, Jon Landis, Jon Parise, jonrose-dev, Joseph Tilahun, Julio Merino, Kai Zhang, keertk, Keith Smiley, Konstantin Erman, Krzysztof Naglik, kshyanashree, Kun-Lu, Lee Mracek, lripoche, Malte Poll, Marc Redemske, Marc Zych, Matt Mackay, Mauricio Galindo, Maxwell Elliott, mohamadk, nathyong, Nick Korostelev, Oliver Lee, Oscar Garzon, Patrick Balestra, Patrick Balestra, Philipp Schrader, Red Daly, redwrasse, robincaloudis, Robin Tweedie, Roger Hu, Sagar Pathare, Saleem Abdulrasool, Sara Adams, Sascha Moecker, Severin Strobl, Siddhesh Bhupendra Kuakde, Simon Mavi Stewart, something_vague, Son Luong Ngoc, Stiopa Koltsov, stoozy, Sushain Cherivirala, tbaing, Ted Kaplan, Ted Kaplan, Ted Logan, Thulio Ferraz Assis, Tom Cnops, Ulf Adams, Ulf Adams, Ulrik Falklof, Uri Baghin, Xavier Bonaventura, Xdng Yng, Xiangquan Xiao, Yannic Bonenberger, Yannic, Yi Cheng, yuzhy8701. + +## Release 6.2.0 (2023-05-09) + +``` +Baseline: d60ce2c7c86393638c77698c00c2168a7a936a53 + +Cherry picks: + + + 490f8badf4f6f4ae8b96697f08267fdb083ccf5f: + kshyanashree is the release manager of 6.0.0 + + 4e66d9340037f0be83d7bc0fdd809a09344ab83f: + Automated rollback of commit + 2a2890913eb8f39299aa4b614ba96266ea8749f6. + + 48a8d01b05149757f69a6a65a22a280bf003cd24: + Allow C/C++ coverage collection for external targets + + ec7be346adc00c4bde22d116fca80ef59da66121: + Temporarily set parent directory of the input to writable if it + is not. + + b0984342eef068640a57aab584dd4c118f0dd394: + Infer CPUs for tvOS and watchOS when on Apple Silicon + + 5cea7dda5b632703cf4e0424ba09cd7c5bd6fc06: + Improve the documentation for ctx.actions.symlink. + + a82d26f17a99b5417b2212a0ce3a1bbc0285e5c4: + Add quotes to "Tip" + + 75b0f3aa95bc34f6620ea74e47d4822bd985efdd: + Write a repo mapping manifest in the runfiles directory (#16555) + + 07c5c1aa6d0b63605ae793dce78d26122af64a84: + Ensure repository names don't start with `~` + + 30f6c8238f39c4a396b3cb56a98c1a2e79d10bb9: + Escape tilde more gracefully + + cf3f48ca49f089615417636763d753811acf717f: + Relax `Label` repo visibility validation + + 4477823e2c2bc3d0335c41f971364dda72a3f69a: + Use "apparent name" instead of "local name" in Bzlmod docs + + 55f4f4834ef30321a00dab5b58202dd1e9716fd9: + Bazel DevSite: Add required css file. + + a706994ac69e3f3fed361c61378de847b50d3b12: + Remove logic that increases delay between progress updates over + time + + 1d514ab05896f34ec91c2145f4dffafd3364030f: + Remove references to io_bazel repository + + b0357bd3831b26b5116dc120807e8264acf139db: + Relnotes python script + + 8f956511bb115c39ac683a1e78971fcf9dce5deb: + Allow Java coverage collection for external targets + + bddb191d3f99402330c67b89375409c31ee22daa: + Fix race condition in package-bazel.sh + + a75785279f543f4e33c697dd9e8873a6504b7818: + Decanonicalize labels emitted by {a,c,}query if possible + + 9d250edb63f27f9f4591bb5a71059710cc6dca9e: + Add uniquify parameter to TemplateDict.add_joined + + f02bcf8d8b0d00ecdd06ea0a45ba4f52e436597c: + Fix identical gcov json file name problem + + a1593309f66f892871e334013815b05350b4188f: + Add `$(rlocationpath(s) ...)` expansion + + 56f54daf9ff3b1177eee31e342e8d6b959d5ac34: + Rollup of SBOM correctness fixes (#16655) + + 72e6e948d30dec9dec60d78efef4eeda5b764a8f: + [cc] Add cc toolchain to starlark cc_proto_library (#16661) + + 8f28513893969b6346d965cab12aac69cb246ced: + Make C++ runfiles library repo mapping aware + + 95f9adc5ac544b1161d69a7ca74432479fdc29b3: + Always collect FileProvider's filesToBuild as data runfiles + + 4959d34e844714b793b2c6fa05016a9a6eaa7044: + fix: export constraints.bzl file from @local_config_platform so + it can be used in downstream bzl_library targets + + 4919d4a61d8506d175b25a035500842b8bfe3d0d: + Add --host_per_file_copt (#16695) + + 0a23d46976c3fc999d44fbd1e37732ec2442d485: + Moving some tests for `RemoteActionFileSystem` of BwoB to a base + class. + + 9296068be5e3808eb03a3b61f3af3a2c88f7ab7d: + [remote/downloader] Don't include headers in `FetchBlobRequest` + + 128d833fee99f8a43bc4de82cbec752e4ce6fb47: + [remote] Respect whether the server supports action cache updates + + 38c501912fc4efc14abc0741d19f5f8e8763afcb: + [remote/downloader] Migrate `Downloader` to take `Credentials` + (#16732) + + 5929cb72aa01768e6352898b1a056ef678c81d90: + Stage repository mapping manifest as a root symlink (#16733) + + 455454a56e961affb041a1d4a9214f7f313a05aa: + Expose current repository name to Java with @AutoBazelRepository + + 97dea593e568f776361397f7280d6a16eee2efeb: + Implement getDirectoryEntries and readdir for + RemoteActionFileSystem. + + aa45f5f3301c5005294df084cdf99c45d6f95d53: + Move integration tests for BwoB to a base class and add more + tests there. + + 1b073ac0a719a09c9b2d1a52680517ab22dc971e: + Make Java runfiles library repo mapping aware + + 148bbb1c025a628643698f65627333d86975c1d7: + Use `_repo_mapping` in C++ runfiles library (#16752) + + 25558ada3fb377cfc2c965d3a93250ca28ce0fc1: + Add --experimental_action_cache_store_output_metadata to the + expansio… + + 6e945e8ab422ca0a195d09899cce61ba6c0cfa59: + Treat `DEBUG` events as progress-like. + + 1940c5d68136ce2079efa8ff74d4e5fdf63ee3e6: + redact 'token' strings from logging + + 0b645254b41edc738c6641fd192fca86203ff2e2: + Make Bash runfiles library repo mapping aware (#16753) + + 4caae75b49e815ad2cf1d805f316bc374f03f2ae: + Automated rollback of commit + 8f956511bb115c39ac683a1e78971fcf9dce5deb. + + 13ff6d9e37999e00fda9a6cef278c7c924924f34: + Fix Bash rlocation failure with stricter Bash options + + bd88c7e47b911e5fa1f8a3c26d0f8317943c43ce: + Make bazel Android remote deps compatible with bzlmod (#16772) + + 6f6d4cca36a3b64009ed9c8b3fb13cb3c7ed915a: + Flip `--incompatible_always_include_files_in_data` + + 94355b1b1c4f7ef923457b8b2a070e5c6528240a: + Add required `--add-opens` server JVM args also with + non-embedded JDK + + 8349c95fc98beb4008085942a67a57f0c4da074b: + Also collect clang resource directory with + `-no-canonical-prefixes` + + dce6ed777d958d65c7f3d4a2f54f8117778a449e: + Make `bazel run` works with minimal mode + + ca8674cc4879ed1846bf015c33fe7d920a3f66ab: + Include source files with `cquery --output=files` (#16826) + + 9cb5e0a31665d3b3f25bf58ec2dee696e828d8b9: + Fsync before rename after copy in DiskCacheClient + + 23ffce53b92ef96432d8c6c58cc95ac362bab1bc: + Update GetActionResult for disk cache to check referenced files + when … + + 0bc0ff5244142eb3348d42025ce21eeb337ad189: + Make Java runfiles library compilable with JDK 8 + + fe169654a29d8ad33105d5d0034a7857834fed5d: + [6.0.0] Default --incompatible_strict_conflict_checks to true. + (#16864) + + 99ca86f7c2968741ac3a9b20c3375fc992d49e66: + Revert "[6.0.0] Default --incompatible_strict_conflict_checks to + true. (#16864)" (#16872) + + 312238f2b1414c98ed7d7d51dc4e18278edb2540: + Make C++ runfiles library build with `-Werror=shadow` + + 2baa5a4284467d70f1b31ea779b79d38ef07d164: + Keep credentials cached across build commands. + + 8818a57fce32a7872f045f03a334e1c9403724d3: + [6.0.0] Only inject metadata for outputs that cannot be + reconstructed by skyf… (#16879) + + 31e4bf409eed71e8fb626092189eacb95f80fed9: + Update java_tools v11.9 + + cd40666001e8d599bb61735898c195c6d2fae55b: + replace _get_canonical_form(label) with str(label) + + e2bc2374188b41924223385ad943db610e92e6c4: + Avoid exceptions from hermetic sandbox for unsupported artifact + subclasses + + b564d145218e58b0440ffad82b3d1d54eef15d22: + Remove warnings about ignored starlark options + + 7ccc66108f08f7b6c6f6e5229f70f29962ea19ce: + [6.0.0] Emit Tree objects in topological order (#16904) + + 86dee6d2ecb269e0c41a97718812054394ee51a4: + Correctly match regex with tree artifact + + 14925b574aa63aad098f2c3d95e14b46ffd295ec: + Always use target's attributes to set Python version (#16959) + + a247502d28d8d70d648390de52952189b99a0bb7: + Add 'toolchain' parameter to actions.{run,run_shell} + + 497b7e403d6e5523bd1310bd1fe83c4ce1a6b1ec: + Fix Bash `runfiles_current_repository` with RBE + + 0a2c4edbc86398266525f31948d67a5736890bfe: + Fix corner cases in Bash runfiles library + + 33b514b25963452be71a015e08d4e890405b00a3: + Fix runfiles creation with MANIFEST when building without the + bytes + + 3a13af41034e1f80cc0fbc1634cf8f724a85b78f: + Remove LCOV merger dependency of `cc_test` without coverage + (#17004) + + 25ba76c1b8d420ebae43c1f59890ae46153c2240: + Include full tree artifact in inputs when prefetcher doesn't + support partial tree artifacts. + + 06deebfb5b73f848de5a0ea0e00fcfaa26788d1f: + Release 6.0.0 (2022-12-19) + + c2bfb2e98d133c62be328e6e93c4b4bdf766d82c: + Enable git_submodules tests and merge git_repository and + starlark_git_repository (#17247) + + e8182ce32931560406fee1c30745e56a2ee9a6b3: + have 'bazel test' non-test targets depend on + --remote_download_output + + c3245cd028977877aa9e485451b29c7736ebcae0: + Add `SpellChecker` suggestions for common Bzlmod errors + + 8ec874348226995c4101b2173a465ddc65cab591: + Use xcrun to invoke install_name_tool + + 2b2bea4ee9d51ad875a8d273aa344ac9c5b6742c: + Extra resources + + 5b4de12b37cb4ba921b6bdfe810bbb47921ab3a6: + Do not clear `--platforms` on no-op change to `--cpu` + + db3c0130b3363485a366897e1c1f2adc5d41fde6: + Report `AspectCreationException` to the user + + 53e9fea30e58ab479e5cd7a6c804634f56fc2ddb: + Use long executable path instead of `argv[0]` in all launchers + + abae5ca3e8142f93cf0c2597e3410ed955c4dd59: + Add sanitizer features to unix_cc_toolchain_config + + db684196afd3b1a0a0e7d883674324bd161ae8bf: + Allow `map_each` to return `None` in `TemplateDict#add_joined` + + 66b58ee904efa22696edc1b78a59bac91da9ed8d: + Always emit trailing zero in human-readable download progress + + 17b8e448a5e5589f96c2794cb38c86b0c64e86c0: + Upload all logs in BEP even with minimal upload + + 28d2daae70be6ee97b876b0568796ceb87af9523: + Set `--experimental_action_listeners` to default in `exec` config + + 16427c9050db140d6cb90d7d6324d4a2ff1e249a: + Do not count tests as failed that have not started + + 094a0aabed1e018e6503bc3ac844c8022b71a527: + Accept tildes in --override_module + + 5f2866f8434ce9a17cf82c001efb7b236f189115: + Do the AC integrity check for disk part of the combined cache. + + cd10d508e20a4964586b46f7edea8a6dc900157c: + Fix `--nozip_undeclared_test_outputs` on Windows + + 073f54b9a7c46afd2c28b4a99a235bdd6b63bb5f: + Allow pyd in extensions of dynamic libraries + + ac504cbb463e76b1374d0060534acabbccb408d2: + Register JavaCompileActionContext in Bazel. + + f090433fcf0f42639608b9c5f0243018c1bb9ac7: + Rollback #14510 because it causes remote test execution to fail + + 942dddaaad9bf4fbb20b66535aad4fc464ad69ba: + Prepare backwards compatible usage of optional C++ toolchain + + 88b51f57d09e43dec31a84d4b636595924d5bfef: + Emit LLVM coverage for source file paths with a `tmp` segment + + bb0b886271d45209e3bef476da37811b9dd2afe5: + Enable archive_param_file feature by default for Windows + + baf97c00c891acf844a29b4cc31abb45b5c434e5: + Allow `TemplateDict#map_each` callback to return a list of + strings (#17306) + + fcb007749f7f24b36c2b7c4284378bba20fc8b69: + Only try to create groups of test actions in the ui. + + 3c47b4716e6eca2b8ab06253915ef8d1bdd28038: + Find `libtool` when using `BAZEL_USE_CPP_ONLY_TOOLCHAIN`. + + 1da8a825c0fba882f33ea6998a76ff8265fcd32c: + Add -dead_strip in default opt link flags for darwin + + b0c5eb30b2738bf6454c3026a3e0f37579d5854c: + Dont query remote cache but always use bytestream protocol + + 00e9af1985cc0227599516fe7568785ca4334050: + Allow Java coverage collection for external targets. + + dd24a0022a0ff959598da2c9bc097d27083be1a0: + Test and fix root symlink edge case in runfiles library + + af97d9830d3207893cc6f5c851431a28f1721acb: + [6.1.0] Fix broken CI (#17422) + + b859571804f2095caaf018b172b59c90f185fd51: + Add `native.package_relative_label` function + + 82168d44ee1d49cf2f406903b6d8b9fde0e66cf2: + Make Bazel more responsive and use less memory when --jobs is + high (#17398) + + 84c1ed430405b154b6e9eb2c28281f450e250eff: + Multiplex worker fixes and tests for Android busybox tools + (#17371) + + 07590818d6ce0d0e66c2377db7e73fb6ee6702e5: + Improve error message for concurrent modifications (#17396) + + 27bc896f36f0e0ea5dbeaaa16f3a124e38a7284a: + [6.1.0] Make bazel coverage work with minimal mode (#17397) + + 544b8164ca352cf06dda0849a589b825631428af: + [6.1.0] Fix cc_binary bug related to cc_shared_library on + Windows and prepare for future removal of + --experimental_cc_shared_library flag (#17445) + + 9a7aa21c8cd6f38d10e23e265dd650bf031f9b7c: + Fix Bash `runfiles_current_repository` for tools + + 911eedc0badcefdbc60a936ae73972772042fc8a: + Fix label unambiguous canonical form to correctly report + non-visible repo names + + e132653ead5e50f4226dbff7776466fef1918f49: + Remove O1 from sanitizer feature flag defaults + + ba9e2f8fe666b4fc6110d86ea93cc11779e77068: + Remove usage of gRPC Context cancellation in the remote + execution client. + + de03a2363d016782c5dfe7c55b5cf06cb610f6a2: + Allow -v to libtool + + 4e35c02c7c400bfbbfa69164a1ec3bd51966ca79: + Prettify labels in action progress messages with Bzlmod (#17278) + + 1be0ac3e73698e31a349ece629c887b06e102a0b: + Expand tree outputs before eagerly prefetching them for local + actions. (#17494) + + c26665102d0d524bb42be8cd205c7b31a22a75c9: + Fix Java coverage collection with Java 8 runtime + + 1a6ffe6d453708e3cefc98a07965c680e48d6bac: + Add a flag to disable execution log sorting. + + fbec8e2ad1dcbebbbc96491f8b6b208f5b3ac91f: + Reduce flakiness on Windows for BwoB tests + + 420659a9ad2a98f57e057d8c22eb621e3b12803e: + Make AutoBazelRepositoryProcessor compatible with Java 8 + + dde6d20b3fd1d7a14825649c9c89d1c4d2d5242b: + Do not recommend `shallow_since` for `git_repository` + + f76fc61640825dd7cf83ce02ba48a4e4f95b66ff: + Allow the timeout value for execute calls on a mac to be set via + an environment variable + + 773d232f528276338098578a28c19c742e3b4e7e: + Fix RPATHs for cc toolchain solib when sibling layout is used + + 5932b3b8886ddb5aba271fd907f1371e67960a44: + [6.1.0] Add --host_features (#17528) + + a0fa77cc36d02f5f230335556a1829b298b2f219: + Exit with code 39 if remote cache evicted blobs that Bazel need + during an invocation (#17496) + + 1a438b41b74d94fd8b6ff4dcf20b4526530e3c6e: + Only fetch @remote_coverage_tools when collecting coverage + (#17512) + + ee1daaf9852d568dcf38357eadd77b9de953db36: + [6.1.0]Only fetch @remote_coverage_tools when collecting + coverage (#17287) + + 350e32952bdd639969e2aff7887c5dc34c21bce6: + [6.1.0]Fix symlink file creation overhead (#17488) + + 5406c953574d48434d33b1cf49b70b718795d783: + [6.1.0] Cleanup stale state when remote cache evicted (#17538) + + 2d1b570e976773134a6244dd012e93a5478f6d4a: + Bump version number in runfiles.bash init code + + 3ab8a0a5d628a0d958fb2eb1c0d5bb76b442e2f2: + [6.1.0]Let `aquery` print effective environment for all + `CommandAction`s (#17274) + + 51e6c38ae808df4f2bf8fb29b4c5173e06ac014a: + Properly report repo fetch progress during main repo mapping + computation + + 744108e88681e770982f148161d328c9b77319a1: + [docs] Update migrating to Xcode tutorial (#17563) + + 9dc7a7e6881f58965103b42390560589e0f38b48: + Update //third_party:jsr305 (#17557) + + 43dadb275b3f9690242bf2d94a0757c721d231a9: + Bump minimum supported macOS versions to 10.13 + + 7d9d23c1ac1b7fcaa461f902e286f50fbb7cb116: + Correctly set default subprocess factory when loading class + `SubprocessBuilder`. + + 77f82f4fab189fd042754be0a7747042d9b01b8f: + Add an --incompatible_strict_conflict_checks alias for + --experimental_strict_conflict_checks. + + e05345dec405a0333c48ff188d2d9a1be90dad53: + Add support for wrapping system streams in WorkRequestHandler + + 68e1924cdab69ab92b8acf2f6e9324d11e00b267: + Also handle remote cache eviction for tree artifacts. (#17601) + + 4a6d056a8d058ab98a01348fb0c046660ee99a71: + Add host transition to lcov_merger in Java version of py_test + + 546e9e2942cb2e98b4c93065cc2d2910878dc900: + Fix Bazel 6.0 crash regression (#17613) + + 7e328bb71004e1976525d8b813ca0d616e2af74b: + Include Bazel version information in profile metadata. (#17616) + + aafe1235c55f6cdcfc577a40736aaeb9ebaca23b: + [6.1.0] Handle remote cache eviction when uploading inputs for + remote actions. (#17605) + + 938e34823206a2644d538ba655d20ac553352975: + [6.1.0] Rerun the artifact conflict check when + --incompatible_strict_conflict_checks changes. (#17592) + + 034a2815a1e18be5c8b36c6a78f44bb849dff437: + Report background download for BwoB (#17619) + + 5afbce52c70cf974eaa4a3bbbc376f398271427d: + [6.1.0] Flag for writable outputs (experimental) (#17617) + + d4105e658001677929338835eb970e6595e66b3c: + [6.1.0] Allow .wasm cc executable and dynamic library extension + (#17440) + + a306f4f7fd440d006aa6ae9234b4430f13bc8cf9: + make desugar dependencies deterministic + + 37953c56ea77c7aa7bea677f3481557fdb2c2a15: + Apply exec transition to lcov_merger in sh_test and cc_test + + 1d73d72a45598e38c51b2618bb6fe4f27b390cb8: + [6.1.0]Fix --host_features with multiple transitions (#17641) + + 755cd4bcd48adf752bd8c161454e53a0f5b6a2fa: + Release 6.1.0 (2023-03-06) + + 885ae7ef3afd88e21c33579bcd64ee3136bd8715: + Revert "Add -dead_strip in default opt link flags for darwin + (#17312)" (#17696) + + 94c519bcc555195d061e1a63f0e4235795bec5be: + Skip empty directories instead of throwing in prefetcher. + (#17718) + + 60749d53dfb56068050edabbf7be11675841c112: + [6.2.0] Remove actionId from RemoteFileArtifactValue. (#17724) + + 52deefe54124c3cff0dd708704381aa4ac69c01d: + Correctly handle templated tree artifacts in the prefetcher. + + 10587b1b819c8b1ae15d064a7bb3d2a7ac2149da: + Silence setlocale warnings in Java stub + + 3ad392776bebbfd2a9584dd221f34494f424a53a: + Force the Bazel server Java runtime to use the root locale + + 7c235ff15190b1eefdbd34696a55272bbb221435: + [credentialhelper] Ignore failing to provide request + + daa3dbe22adb03338c75b53ea97954c9434099b4: + [remote] upload: treat `ALREADY_EXISTS` as success + + e0cdaced03750823021b8b1f5b82a71170d67642: + Fix data race in prefetcher. + + c9e3eeb2f34d66e2c8bcccd32786ea75c357497e: + [6.2.0] Update java_tools v11.12 (#17761) + + 6c8930347025ef22e21d7793dd9202033dd79151: + python: Remove temporary module space created for zip-based + binaries (#17764) + + b874e5fd7ed6f1cb2ac4b858bd28b46ae97350e0: + [6.2.0]Add test coverage support to android_local_test (#17467) + + 6fc9bedb3e26479df62b82d281854aed4a916fa9: + Fix wasm dynamic library extension crash (#17765) + + 38ece3c04105698fc84daa89ba30c5fa692e0403: + Handle `SIGWINCH` under `bazel run //some:test` (i.e. test + rules) correctly. + + 49a9502312b6af391a10e1a5c3e05d245ad54899: + Clear all remote metadata if any of them are evicted from remote + cache + + 8fab22e64035561fdb1c96d4e507b78a02cb5e39: + Include build-tools/X.Y.Z/{lib,lib64}/** in the minimal set of + SDK files used by the Android integration tests. + + 3a7236beb8c0692c327aaeb5341801280d0cd870: + Allow WORKSPACE and WORKSPACE-loaded .bzl files to see Bzlmod + root module's mappings (#17818) + + a87b8e0b6b17feed7e649a85f17162510fa8d652: + [6.2.0]Add support for alias targets to cquery's `providers` + (#17786) + + ee32efffe4c407d7fe54b287a80a3b0a115040c6: + [6.2.0] Allows --query_file to be used for cquery and aquery + too. (#17823) + + cfef67da634996f09e5f2509e198cc73c88ce8b2: + Fix seeking of empty chunkers. + + 50ec6bbff08cc00de4dfdea68e7483f383674222: + Rework ByteStreamUploader early return logic. + + 745ca288770253225d5d96069038a5d735eda69b: + Suggest alternatives for typoed rule attribute names + + 8548e202a6871a17f0d097e2cedc9ff8064ef962: + Relax JSON parser, ensure duplicate keys are overridden + + c04f0d41317bfe1f6ff42da94dddb4023587fc26: + Use less subshells and `tee`s in running tests with `bazel run`. + + 8c6d02e00777c0cc12e97fccc5f4fb6e8109a5bd: + Upgrade Azul JDK 17 archives. (#17852) + + 3c1c0c09e68420c813d6258b90ff96641dbd1151: + Add suggestions to invalid tag class errors + + 99b3f38649dc82efde6c570e80ce4f3abbc4ac43: + [6.2.0] Add native.module_{name,version} (#17893) + + f7627e00bf96c9159ab79a32afc4f6a622f0deeb: + Support (workspace) relative paths in --override_module closes + https://github.com/bazelbuild/bazel/issues/17551 + + 109b29019882811d1beb97a60f8cda668442e8e8: + Fail early if `use_extension` has a bad label + + f63ce7973b8f3f2560f41daf7321a40d20b22fab: + Avoid unnecessary copying when building Merkle trees. + + 3ea18cc033ed078f83fc6644c9d20fb69d6d2657: + [6.2.0]Add `module_ctx.is_dev_dependency` (#17934) + + 2d04c91327cadb3f0d53bceea117d3939a25e143: + [6.2.0] Add version to JavaRuntimeInfo (#17913) + + 2c1a63bc1df727ee26526eec27c5a92fc0c20649: + Fix CI breakages for release-6.2.0 (#17969) + + 788801a8fd30985a1831de805172d257c6f63691: + Enable C++ deps pruning on Windows when PARSE_SHOWINCLUDES is + available. + + fb4a0c288ba5ee14e47c7879a6be3eefb44bfe9f: + [6.2.0] TargetPattern parsing fixes (#17945) + + 70ce8378638290295e17fb62e735a239f22672e6: + Add attribute 'provides = [CcInfo]' to '_cc_proto_aspect' + + 6e18829339a5ba839ab129c64bd9333d3d8c1e5a: + [6.2.0]Expose cc_proto_aspect as a toplevel symbol. (#17980) + + 0f55d124c05ee2654c3ff56e0332e71ff1eb437c: + Cache Merkle trees for tree artifacts. + + 6d6fa81e47591f41b9dce5e2a9a8512ec13d3f4a: + Deduplicate concurrent computations of the same Merkle tree. + + 1f2b3ed4ac717b814d02a0d125f160ddabe78003: + Patch zlib to fix compatibility with latest Xcode + + 27e4c6243524156d880bd04e834db5ebdb0a69af: + Add exception message to 'failed to create output directory' + + 405012066d2394ad9986830ca028badd3c65ad38: + Prevent failures creating output directories + + 1474b5b5b41dfb680674e37975b6e1754c3a7445: + Allow multiple matching select branches if they resolve to the + same value (#18066) + + 5ddef4716e33b12f5dc1386abdb48ba8ab9ff7ab: + Turn applicable_licenses on platform() into a no-op. (#18089) + + e00509bd5f1dee6fcaf495893c5bb5ae385ea8ea: + Use ctime in file digest cache key (#18105) + + ca30372e210a638cfce8334b6dc3396c83424baa: + Gracefully handle output symlinks with BwoB + + a0cb57fd7e7dfafd54070b5fdfbd4b4254ce6e95: + [6.2.0] profile: add profile_finish_ts (#18129) + + 1a60fad7d0a8d04399cca0e5bc5d9ee5b01858eb: + fix(python): Set envvar for runfiles manifest, not runfiles dir, + when using a manifest (#18133) + + 5e9fa3967cf0288083638aec3b34328ab8a90a51: + Add attribute validation to IncompatibleTargetChecker. (#18135) + + 97312f328f735ab8bcc28674e84450313f7667bf: + [6.2.0] Update CODEOWNERS (#18149) + + 76ad4a9b8e1b5a5cc5ed5edaad9b438cd9d8ef66: + [6.2.0]Fix worker and multiplex workers for DexBuilder and + Desugar actions (#17965) + + 5afb8b61fab4671cb9a756fdb8fc275ee2fa4d19: + Lockfile cherry picks (#18143) + + 1940dfb07424ff7ac6d1d8cf7b776b4dc04b21e8: + Automatically retry the build if encountered remote cache + eviction error (#18171) + + 755cf95b0df132c1d3fb80ccff6d5b52de708514: + [6.2.0]Allow remote retry max delay to be user configurable + (#18061) + + 6c6111085e57f4b8869a5d2bdead0f8a536950ea: + Add `module_ctx.extension_metadata` (#18174) + + c1fea137312248d606bbb73bac1ab4a4e87557a2: + Introduce max_compatibility_level for bazel_dep (#18178) + + f95b80d166eb46ba4e4c0fb4b998f6e12206ee17: + Include cause when reporting `ActionExecutionException` + + 8a41be90cf24258db14a8ca1be7c4334d0076dd5: + Check for the nullness of AspectValue. + + 271512031d1a43f85eede12cd05b0ebeec66bc9a: + Rename `--experimental_remote_grpc_log` to `--remote_grpc_log` + + e4682f6c6fa5d8d67d667aa6593a34370e689cf5: + [6.2.0] Update java_tools v12.1 (#18197) + + d94dee2b6b382ec2835f9871b34b3e703bcc49a7: + Construct TreeArtifactValues on multiple threads. (#18194) + + 519eef48ee166cfcc4fb8e92d4728483ecc4fd40: + Fix crash on multiple output symlinks with BwoB + + 2442a2e9c064781120b78efe554ca3617bee8769: + [6.2.0] default_java_toolchain.bzl cherry-picks to fix + regression (#18225) + + e4f3d4ddfb54419bd5bb793a29b83ff26c82d9ce: + Fix message generation of `ActionExecutionException` + + f39454f0eb85e08f849c8c76123191205224d269: + Add `dev_dependency` to + `register_{execution_platforms,toolchains}` + + bf188c12cb8ad9164ab78564d142699fdc37efaa: + Fine tune the number of test jobs running in parallel to avoid + timeout on Intel macOS platform + + e0242479af14aeb3d8444947cdaf540d8ec7ff3a: + Update java_tools v12.2 + + 2dca98231b02ad8531608183c1e14c5492c62da0: + Update java_tools v12.3 +``` + +Incompatible changes: + + - Bazel no longer increases the delay between progress updates when + there is no cursor control. + - `--incompatible_always_include_files_in_data` is flipped + to true. See https://github.com/bazelbuild/bazel/issues/16654 for + details. + - `cquery --output=files` also outputs source files. + + Closes #16602. + - `--incompatible_strict_conflict_checks` is flipped to true. See + https://github.com/bazelbuild/bazel/issues/16729 for details. + - This changes the behavior of Python version in exec/host + configuration. Mitigation is to set Python version on the targets. + - `--features` only applies to targets built in the target + configuration, and `--host_features` is used for the host / exec + configuration (gated behind `--incompatible_use_host_features`) + + Fixes https://github.com/bazelbuild/bazel/issues/13839 + + Closes #16626. + +New features: + + - The aquery and cquery commands now respect the --query_file flag + just like the query command. + +Important changes: + + - The new path variable `$(rlocationpath ...)` and its plural form + `$(rlocationpaths ...)` can be used to expand labels to the paths + accepted by the `Rlocation` function of runfiles libraries. This + is the preferred way to access data dependencies at runtime and + works on all platforms, even when runfiles are not enabled (e.g., + on Windows by default). + + Work towards #16124 + Fixes #10923 + + Closes #16428. + - Starlark `print()` statements are now emitted iff the line of + code is executed. They are no longer replayed on subsequent + invocations unless the Starlark code is re-executed. + Additionally, multiple identical `print()` statements (same + string from the same line of code, e.g. from a loop) are all + emitted and no longer deduplicated. + - Fixes a bug where some compilation flags would not be applied to + a cc_test + - Added a `native.package_relative_label()` function, which + converts a label string to a Label object in the context of the + calling package, in contrast to `Label()`, which does so in the + context of the current .bzl file. Both functions now also accept + relative labels such as `:foo`, and are idempotent. + - Adds coverage metric support to android_local_test + - Fixed an issue where WORKSPACE and WORKSPACE-loaded .bzl files + couldn't see the Bzlmod root module's mappings when Bzlmod is + enabled. + - Added `native.module_name()` and `native.module_version()` to + allow BUILD macro authors to acquire information about which + Bazel module the current repo is associated with. + - `@foo` labels can now be used on the command line as the + top-level target (that is, `bazel build @foo` now works). + Double-dot syntax is now forbidden (`bazel build ../foo` will no + longer work). + - Added preliminary support for a lockfile for Bzlmod. It's + disabled by default; use `--lockfile_mode=update` to enable it. + This lockfile contains only Bazel module information; it does not + involve module extensions. + - Added a new `max_compatibility_level` attribute to the + `bazel_dep` directive, which allows version selection to upgrade + a dependency up to the specified compatibility level. + + Co-authored-by: Brentley Jones + - `--experimental_remote_grpc_log` has been renamed to + `--remote_grpc_log` + + Closes #18180. + +This release contains contributions from many people at Google, as well as Ben Lee, Brentley Jones, Ezekiel Warren, Fabian Meumertzheim, keertk, Keith Smiley, Krzysztof Naglik, kshyanashree, lunch-glide-pepper, oquenchil, Patrick Balestra, Son Luong Ngoc, Ted Kaplan, Ted Kaplan, UebelAndre, Xùdōng Yáng, Yannic, yuzhy8701. + +## Release 7.0.0-pre.20230502.1 (2023-05-05) + +``` +Baseline: a0cd355347b57b17f28695a84af168f9fd200ba1 +``` + +Important changes: + + - json.decode now takes an optional `default` positional parameter; + if this parameter is specified and decoding fails, json.decode + will return + the `default` value instead of failing Starlark evaluation. + +This release contains contributions from many people at Google, as well as Benjamin Peterson, David Ostrovsky, eareilg, Fabian Meumertzheim, Son Luong Ngoc. + +## Release 7.0.0-pre.20230426.1 (2023-05-03) + +``` +Baseline: dc724e4e8041a9357c6b82af0749def4174f21f2 +``` + +Important changes: + + - Added a new `max_compatibility_level` attribute to the + `bazel_dep` directive, which allows version selection to upgrade + a dependency up to the specified compatibility level. + - `--experimental_remote_grpc_log` has been renamed to + `--remote_grpc_log` + - `--incompatible_remote_build_event_upload_respect_no_cache` is + now a no-op. + +This release contains contributions from many people at Google, as well as Benjamin Peterson, Brentley Jones, Fabian Meumertzheim, George Gensure, Kai Zhang, Oscar Garzon. + ## Release 7.0.0-pre.20230420.2 (2023-04-27) ``` diff --git a/CODEOWNERS b/CODEOWNERS index a6c21d52b54160..021add0c470967 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -27,6 +27,8 @@ android/ @ahumesky @ted-xie /src/test/java/com/google/devtools/build/android/dexer/ @ahumesky @ted-xie @kevin1e100 +/src/test/shell/bazel/android/ @ahumesky @ted-xie + # Apple /src/main/java/com/google/devtools/build/lib/rules/apple @bazelbuild/rules_apple-team diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0685c5240ed7f4..6d63af17f5a4c5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,5 +16,5 @@ again. Read how to [contribute to Bazel](https://bazel.build/contributing.html), the [acceptance process for your pull request](https://bazel.build/basics/patching.html), -and the lifecycle of a Bazel [issue](https://www.bazel.build/maintaining/maintainers-guide.html#lifecycle-of-an-issue) -and [pull request](https://www.bazel.build/maintaining/maintainers-guide.html#lifecycle-of-a-pull-request). +and the lifecycle of a Bazel [issue](https://www.bazel.build/maintaining/maintainers-guide.html#lifecycle-issue) +and [pull request](https://www.bazel.build/maintaining/maintainers-guide.html#lifecycle-pull-request). diff --git a/MODULE.bazel b/MODULE.bazel index b6f5fdc5c05cb4..d912967c8c24cb 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( repo_name = "io_bazel", ) -bazel_dep(name = "rules_license", version = "0.0.3") +bazel_dep(name = "rules_license", version = "0.0.7") bazel_dep(name = "bazel_skylib", version = "1.4.1") bazel_dep(name = "protobuf", version = "21.7", repo_name = "com_google_protobuf") bazel_dep(name = "grpc", version = "1.48.1", repo_name = "com_github_grpc_grpc") @@ -16,16 +16,23 @@ bazel_dep(name = "stardoc", version = "0.5.3", repo_name = "io_bazel_skydoc") bazel_dep(name = "zstd-jni", version = "1.5.2-3") bazel_dep(name = "zlib", version = "1.2.13") bazel_dep(name = "rules_cc", version = "0.0.6") -bazel_dep(name = "rules_java", version = "5.5.0") +bazel_dep(name = "rules_go", version = "0.39.1") +bazel_dep(name = "rules_java", version = "6.1.1") bazel_dep(name = "rules_proto", version = "5.3.0-21.7") -bazel_dep(name = "rules_jvm_external", version = "4.5") +bazel_dep(name = "rules_jvm_external", version = "5.2") bazel_dep(name = "rules_python", version = "0.19.0") bazel_dep(name = "rules_testing", version = "0.0.4") single_version_override( module_name = "rules_jvm_external", patch_strip = 1, - patches = ["//third_party:rules_jvm_external.patch"], + patches = ["//third_party:rules_jvm_external_5.2.patch"], +) + +single_version_override( + module_name = "rules_java", + patch_strip = 1, + patches = ["//third_party:rules_java_6.1.0.patch"], ) maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") diff --git a/README.md b/README.md index dd3d456ee3cd84..ee4c8b4eaa434f 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Build and test software of any size, quickly and reliably. * [Extend Bazel](https://bazel.build/rules/concepts) * [Write tests](https://bazel.build/reference/test-encyclopedia) * [Roadmap](https://bazel.build/community/roadmaps) - * [Who is using Bazel?](https://github.com/bazelbuild/bazel/wiki/Bazel-Users) + * [Who is using Bazel?](https://bazel.build/community/users) ## Reporting a Vulnerability diff --git a/WORKSPACE b/WORKSPACE index 1f3b0ac8cb8c9c..dff2ce748594f9 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,7 +1,7 @@ workspace(name = "io_bazel") -load("//tools/build_defs/repo:http.bzl", "http_archive", "http_jar") -load("//:distdir.bzl", "dist_http_archive", "distdir_tar") +load("//tools/build_defs/repo:http.bzl", "http_archive") +load("//:distdir.bzl", "dist_http_archive", "dist_http_jar", "distdir_tar") load("//:distdir_deps.bzl", "DIST_DEPS") load("//:repositories.bzl", "embedded_jdk_repositories") @@ -194,6 +194,14 @@ dist_http_archive( strip_prefix = "zstd-jni-1.5.2-3", ) +dist_http_archive( + name = "blake3", + build_file = "//third_party:blake3/blake3.BUILD", + patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, + patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, + strip_prefix = "BLAKE3-1.3.3", +) + http_archive( name = "org_snakeyaml", build_file_content = """ @@ -236,7 +244,6 @@ java_library( ], ) -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. dist_http_archive( name = "rules_cc", patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, @@ -245,6 +252,10 @@ dist_http_archive( dist_http_archive( name = "rules_java", +) + +dist_http_archive( + name = "rules_java_builtin_for_testing", patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, ) @@ -255,31 +266,6 @@ dist_http_archive( patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, ) -# For testing, have an distdir_tar with all the archives implicit in every -# WORKSPACE, to that they don't have to be refetched for every test -# calling `bazel sync`. -distdir_tar( - name = "test_WORKSPACE_files", - archives = [ - "android_tools_pkg-0.28.0.tar", - "r8-8.0.40.jar", - ], - dirname = "test_WORKSPACE/distdir", - dist_deps = {dep: attrs for dep, attrs in DIST_DEPS.items() if "test_WORKSPACE_files" in attrs["used_in"]}, - sha256 = { - "android_tools_pkg-0.28.0.tar": "db3b02421ae974e0b33573f3e4f658d5f89cc9a0b42baae0ba2ac08e25c0720a", - "r8-8.0.40.jar": "ab1379835c7d3e5f21f80347c3c81e2f762e0b9b02748ae5232c3afa14adf702", - }, - urls = { - "android_tools_pkg-0.28.0.tar": [ - "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.28.0.tar", - ], - "r8-8.0.40.jar": [ - "https://maven.google.com/com/android/tools/r8/8.0.40/r8-8.0.40.jar", - ], - }, -) - dist_http_archive( name = "io_bazel_skydoc", ) @@ -298,12 +284,13 @@ http_archive( url = "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.28.0.tar", ) -# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE -# and tools/android/android_extensions.bzl -http_jar( - name = "android_gmaven_r8_for_testing", - sha256 = "ab1379835c7d3e5f21f80347c3c81e2f762e0b9b02748ae5232c3afa14adf702", - url = "https://maven.google.com/com/android/tools/r8/8.0.40/r8-8.0.40.jar", +# This is here to override the android_gmaven_r8 rule from +# src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE +# so that tests like src/test/java/com/google/devtools/build/android/r8:AllTests +# use the most recent version of R8 rather than the one might be referenced in a released +# version of bazel that might have an outdated android_remote_tools.WORKSPACE relative to the tests. +dist_http_jar( + name = "android_gmaven_r8", ) dist_http_archive( @@ -312,208 +299,11 @@ dist_http_archive( patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, ) -dist_http_archive( - name = "remotejdk11_linux_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_linux_aarch64_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_linux_ppc64le_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_linux_s390x_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_macos_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_macos_aarch64_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_win_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -dist_http_archive( - name = "remotejdk11_win_arm64_for_testing", - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, -) - -[ - dist_http_archive( - name = "remotejdk%s_%s_for_testing" % (version, os), - build_file = "@local_jdk//:BUILD.bazel", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, - ) - for version in ("17", "20") - for os in ("linux", "macos", "macos_aarch64", "win") + (("linux_s390x", "win_arm64") if version != "20" else ()) -] - -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. -dist_http_archive( - name = "remote_java_tools_for_testing", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. -dist_http_archive( - name = "remote_java_tools_linux_for_testing", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. -dist_http_archive( - name = "remote_java_tools_windows_for_testing", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. -dist_http_archive( - name = "remote_java_tools_darwin_x86_64_for_testing", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. -dist_http_archive( - name = "remote_java_tools_darwin_arm64_for_testing", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "remote_java_tools_test", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "remote_java_tools_test_linux", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "remote_java_tools_test_windows", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "remote_java_tools_test_darwin_x86_64", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -# Used in src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "remote_java_tools_test_darwin_arm64", - patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE, - patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN, -) - -dist_http_archive( - name = "openjdk11_linux_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) - -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "openjdk11_linux_s390x_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) - -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "openjdk11_darwin_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) +load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "openjdk11_darwin_aarch64_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) +rules_java_dependencies() -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "openjdk11_windows_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) - -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -dist_http_archive( - name = "openjdk11_windows_arm64_archive", - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", -) - -# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. -[ - dist_http_archive( - name = "openjdk%s_%s_archive" % (version, os), - build_file_content = """ -java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) -exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) -""", - ) - for version in ("17", "20") - for os in ("linux", "darwin", "darwin_aarch64", "windows") + (("linux_s390x", "windows_arm64",) if version != "20" else ()) -] +rules_java_toolchains() load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories") @@ -629,11 +419,11 @@ maven_install( "com.google.code.findbugs:jsr305:3.0.2", "com.google.code.gson:gson:2.9.0", "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", - "com.google.errorprone:error_prone_annotation:2.18.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.errorprone:error_prone_check_api:2.18.0", - "com.google.errorprone:error_prone_core:2.18.0", - "com.google.errorprone:error_prone_type_annotations:2.18.0", + "com.google.errorprone:error_prone_annotation:2.19.0", + "com.google.errorprone:error_prone_annotations:2.19.0", + "com.google.errorprone:error_prone_check_api:2.19.0", + "com.google.errorprone:error_prone_core:2.19.0", + "com.google.errorprone:error_prone_type_annotations:2.19.0", "com.google.flogger:flogger-system-backend:0.5.1", "com.google.flogger:flogger:0.5.1", "com.google.flogger:google-extensions:0.5.1", @@ -657,40 +447,39 @@ maven_install( "io.grpc:grpc-protobuf-lite:1.48.1", "io.grpc:grpc-protobuf:1.48.1", "io.grpc:grpc-stub:1.48.1", - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-http2:4.1.87.Final", - "io.netty:netty-codec-http:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler-proxy:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver-dns:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", + "io.netty:netty-buffer:4.1.93.Final", + "io.netty:netty-codec-http2:4.1.93.Final", + "io.netty:netty-codec-http:4.1.93.Final", + "io.netty:netty-codec:4.1.93.Final", + "io.netty:netty-common:4.1.93.Final", + "io.netty:netty-handler-proxy:4.1.93.Final", + "io.netty:netty-handler:4.1.93.Final", + "io.netty:netty-resolver-dns:4.1.93.Final", + "io.netty:netty-resolver:4.1.93.Final", "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", "io.netty:netty-tcnative-classes:2.0.56.Final", - "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.87.Final", - "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.87.Final", - "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.87.Final", - "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.87.Final", - "io.netty:netty-transport-sctp:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final", + "io.netty:netty-transport-classes-epoll:4.1.93.Final", + "io.netty:netty-transport-classes-kqueue:4.1.93.Final", + "io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.93.Final", + "io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.93.Final", + "io.netty:netty-transport:4.1.93.Final", "io.reactivex.rxjava3:rxjava:3.1.2", "javax.activation:javax.activation-api:1.2.0", "javax.annotation:javax.annotation-api:1.3.2", "javax.inject:javax.inject:1", - "net.bytebuddy:byte-buddy-agent:1.11.13", - "net.bytebuddy:byte-buddy:1.11.13", + "net.bytebuddy:byte-buddy-agent:1.14.5", + "net.bytebuddy:byte-buddy:1.14.5", "org.apache.commons:commons-compress:1.19", "org.apache.commons:commons-pool2:2.8.0", "org.apache.tomcat:tomcat-annotations-api:8.0.5", @@ -755,7 +544,7 @@ maven_install( maven.artifact( "org.mockito", "mockito-core", - "3.12.4", + "5.4.0", testonly = True, ), ], @@ -769,7 +558,8 @@ maven_install( "com.google.protobuf:protobuf-java", "com.google.protobuf:protobuf-javalite", ], - fail_if_repin_required = False, + # Don't forget to change this to back to True before submitting your change. + fail_if_repin_required = True, maven_install_json = "//:maven_install.json", repositories = [ "https://repo1.maven.org/maven2", @@ -793,6 +583,7 @@ maven_install( "com.android.tools:common:30.1.3", "com.android.tools:repository:30.1.3", ], + # Don't forget to change this to back to True before submitting your change. fail_if_repin_required = True, maven_install_json = "//src/tools/android:maven_android_install.json", repositories = [ diff --git a/distdir.bzl b/distdir.bzl index b4dab33424830d..d01467cc72cd1c 100644 --- a/distdir.bzl +++ b/distdir.bzl @@ -14,7 +14,7 @@ """Defines a repository rule that generates an archive consisting of the specified files to fetch""" load("//:distdir_deps.bzl", "DEPS_BY_NAME") -load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file") +load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file", "http_jar") _BUILD = """ load("@rules_pkg//pkg:tar.bzl", "pkg_tar") @@ -115,3 +115,21 @@ def dist_http_file(name, **kwargs): urls = info["urls"], **kwargs ) + +def dist_http_jar(name, **kwargs): + """Wraps http_jar, providing attributes like sha and urls from the central list. + + dist_http_jar wraps an http_jar invocation, but looks up relevant attributes + from distdir_deps.bzl so the user does not have to specify them. + + Args: + name: repo name + **kwargs: see http_jar for allowed args. + """ + info = DEPS_BY_NAME[name] + http_jar( + name = name, + sha256 = info["sha256"], + urls = info["urls"], + **kwargs + ) diff --git a/distdir_deps.bzl b/distdir_deps.bzl index 701fbdef2abfa9..45f8248a697f00 100644 --- a/distdir_deps.bzl +++ b/distdir_deps.bzl @@ -33,7 +33,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "0.0.6", }, @@ -59,26 +58,28 @@ DIST_DEPS = { "urls": ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.6/rules_cc-0.0.6.tar.gz"], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "0.0.6", "strip_prefix": "rules_cc-0.0.6", }, "rules_java": { - "archive": "rules_java-5.4.1.tar.gz", - "sha256": "a1f82b730b9c6395d3653032bd7e3a660f9d5ddb1099f427c1e1fe768f92e395", - "strip_prefix": "", - "urls": [ - "https://github.com/bazelbuild/rules_java/releases/download/5.4.1/rules_java-5.4.1.tar.gz", + "aliases": [ + "rules_java_builtin", + "rules_java_builtin_for_testing", ], + "archive": "rules_java-6.1.1.tar.gz", + "sha256": "76402a50ae6859d50bd7aed8c1b8ef09dae5c1035bb3ca7d276f7f3ce659818a", + "urls": ["https://github.com/bazelbuild/rules_java/releases/download/6.1.1/rules_java-6.1.1.tar.gz"], + "patches": ["//third_party:rules_java_6.1.0.patch"], + "patch_args": ["-p1"], + "workspace_file_content": "", "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "license_kinds": [ "@rules_license//licenses/spdx:Apache-2.0", ], - "package_version": "5.4.1", + "package_version": "6.1.1", }, # Used in src/test/java/com/google/devtools/build/lib/blackbox/framework/blackbox.WORKSAPCE "rules_proto": { @@ -90,7 +91,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "license_kinds": [ "@rules_license//licenses/spdx:Apache-2.0", @@ -113,7 +113,6 @@ DIST_DEPS = { "patches": ["//third_party/protobuf:21.7.patch"], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "license_kinds": [ "@rules_license//licenses/generic:notice", @@ -136,7 +135,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "1.48.1", }, @@ -154,7 +152,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], }, "com_envoyproxy_protoc_gen_validate": { @@ -171,7 +168,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], }, "bazel_gazelle": { @@ -183,7 +179,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "0.24.0", }, @@ -197,7 +192,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "license_kinds": [ "@rules_license//licenses/spdx:Apache-2.0", @@ -214,7 +208,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "license_kinds": [ "@rules_license//licenses/generic:notice", @@ -230,7 +223,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], }, "re2": { @@ -242,7 +234,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], }, "com_google_absl": { @@ -254,7 +245,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "strip_prefix": "abseil-cpp-20220623.1", "license_kinds": [ @@ -283,11 +273,36 @@ DIST_DEPS = { "license_text": "LICENSE", "package_version": "1.5.2-3", }, + "blake3": { + "archive": "v1.3.3.zip", + "sha256": "bb529ba133c0256df49139bd403c17835edbf60d2ecd6463549c6a5fe279364d", + "urls": [ + "https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.3.3.zip", + ], + "used_in": [ + "additional_distfiles", + ], + "license_kinds": [ + "@rules_license//licenses/spdx:Apache-2.0", + ], + "license_text": "LICENSE", + "package_version": "1.3.3", + }, ################################################### # # Build time dependencies for testing and packaging # ################################################### + "android_gmaven_r8": { + "archive": "r8-8.0.40.jar", + "sha256": "ab1379835c7d3e5f21f80347c3c81e2f762e0b9b02748ae5232c3afa14adf702", + "urls": [ + "https://maven.google.com/com/android/tools/r8/8.0.40/r8-8.0.40.jar", + ], + "used_in": [ + ], + "package_version": "8.0.40", + }, "bazel_skylib": { "archive": "bazel-skylib-1.3.0.tar.gz", "sha256": "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506", @@ -297,7 +312,6 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "1.3.0", }, @@ -314,17 +328,16 @@ DIST_DEPS = { "strip_prefix": "stardoc-1ef781ced3b1443dca3ed05dec1989eca1a4e1cd", }, "rules_license": { - "archive": "rules_license-0.0.3.tar.gz", - "sha256": "00ccc0df21312c127ac4b12880ab0f9a26c1cff99442dc6c5a331750360de3c3", + "archive": "rules_license-0.0.7.tar.gz", + "sha256": "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360", "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/0.0.3/rules_license-0.0.3.tar.gz", - "https://github.com/bazelbuild/rules_license/releases/download/0.0.3/rules_license-0.0.3.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", + "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], - "package_version": "0.0.3", + "package_version": "0.0.7", }, "rules_pkg": { "archive": "rules_pkg-0.8.0.tar.gz", @@ -335,32 +348,31 @@ DIST_DEPS = { ], "used_in": [ "additional_distfiles", - "test_WORKSPACE_files", ], "package_version": "0.8.0", }, "rules_jvm_external": { - "archive": "4.5.zip", - "sha256": "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6", - "strip_prefix": "rules_jvm_external-4.5", + "archive": "rules_jvm_external-5.2.tar.gz", + "sha256": "f86fd42a809e1871ca0aabe89db0d440451219c3ce46c58da240c7dcdc00125f", + "strip_prefix": "rules_jvm_external-5.2", "patches": [ - "//third_party:rules_jvm_external.patch", + "//third_party:rules_jvm_external_5.2.patch", ], "patch_args": ["-p1"], "urls": [ - "https://github.com/bazelbuild/rules_jvm_external/archive/4.5.zip", + "https://github.com/bazelbuild/rules_jvm_external/releases/download/5.2/rules_jvm_external-5.2.tar.gz", ], "used_in": [ "additional_distfiles", ], - "package_version": "4.5", + "package_version": "5.2", }, "rules_python": { "sha256": "ffc7b877c95413c82bfd5482c017edcf759a6250d8b24e82f41f3c8b8d9e287e", "strip_prefix": "rules_python-0.19.0", "urls": ["https://github.com/bazelbuild/rules_python/releases/download/0.19.0/rules_python-0.19.0.tar.gz"], "archive": "rules_python-0.19.0.tar.gz", - "used_in": ["additional_distfiles", "test_WORKSPACE_files"], + "used_in": ["additional_distfiles"], }, "rules_testing": { "sha256": "4e21f9aa7996944ce91431f27bca374bff56e680acfe497276074d56bc5d9af2", @@ -370,7 +382,7 @@ DIST_DEPS = { "https://github.com/bazelbuild/rules_testing/releases/download/v0.0.4/rules_testing-v0.0.4.tar.gz", ], "archive": "rules_testing-v0.0.4.tar.gz", - "used_in": ["additional_distfiles", "test_WORKSPACE_files"], + "used_in": ["additional_distfiles"], "package_version": "0.0.4", }, "desugar_jdk_libs": { @@ -393,398 +405,97 @@ DIST_DEPS = { "https://mirror.bazel.build/bazel_coverage_output_generator/releases/coverage_output_generator-v2.6.zip", ], "used_in": [ - "test_WORKSPACE_files", ], "package_version": "2.6", }, - "remote_java_tools": { - "aliases": [ - "remote_java_tools_test", - "remote_java_tools_for_testing", - ], - "archive": "java_tools-v12.2.zip", - "sha256": "c284bcd37d27d2a83b14834811d5afb9a289ce4fcc27c91e49952f415d91424a", - "urls": [ - "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.2/java_tools-v12.2.zip", - "https://github.com/bazelbuild/java_tools/releases/download/java_v12.2/java_tools-v12.2.zip", - ], - "used_in": [ - "test_WORKSPACE_files", - ], - "package_version": "12.2", - }, - "remote_java_tools_linux": { - "aliases": [ - "remote_java_tools_test_linux", - "remote_java_tools_linux_for_testing", - ], - "archive": "java_tools_linux-v12.2.zip", - "sha256": "49de7ee1167bf377ce594d3ac796579b831a5bbaa0224eaa42b9b99ef2e23d24", - "urls": [ - "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.2/java_tools_linux-v12.2.zip", - "https://github.com/bazelbuild/java_tools/releases/download/java_v12.2/java_tools_linux-v12.2.zip", - ], - "used_in": [ - "test_WORKSPACE_files", - ], - "package_version": "12.2", - }, - "remote_java_tools_windows": { - "aliases": [ - "remote_java_tools_test_windows", - "remote_java_tools_windows_for_testing", - ], - "archive": "java_tools_windows-v12.2.zip", - "sha256": "7455d69d8156a0867a274e39e51e06dd4c25141096275d8def5e27db492ce1ae", + "openjdk_linux_vanilla": { + "archive": "zulu20.30.11-ca-jdk20.0.1-linux_x64.tar.gz", + "sha256": "ec5c0426a0eb2b0460968a044665ed4603b224acd5e20c379e9d7890511da683", + "strip_prefix": "zulu20.30.11-ca-jdk20.0.1-linux_x64", "urls": [ - "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.2/java_tools_windows-v12.2.zip", - "https://github.com/bazelbuild/java_tools/releases/download/java_v12.2/java_tools_windows-v12.2.zip", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-linux_x64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-linux_x64.tar.gz", ], "used_in": [ - "test_WORKSPACE_files", ], - "package_version": "12.2", }, - "remote_java_tools_darwin_x86_64": { - "aliases": [ - "remote_java_tools_test_darwin_x86_64", - "remote_java_tools_darwin_x86_64_for_testing", - ], - "archive": "java_tools_darwin_x86_64-v12.2.zip", - "sha256": "940e50ca43effa43e4008eb57b2a504f5593ec919e883a4cdc66bdc35989829b", + "openjdk_linux_aarch64_vanilla": { + "archive": "zulu20.30.11-ca-jdk20.0.1-linux_aarch64.tar.gz", + "sha256": "2487cf315d1f56291c1f41fb56a34a7f863ce5bf85cadd284c79ea3f848d707c", + "strip_prefix": "zulu20.30.11-ca-jdk20.0.1-linux_aarch64", "urls": [ - "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.2/java_tools_darwin_x86_64-v12.2.zip", - "https://github.com/bazelbuild/java_tools/releases/download/java_v12.2/java_tools_darwin_x86_64-v12.2.zip", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-linux_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-linux_aarch64.tar.gz", ], "used_in": [ - "test_WORKSPACE_files", ], - "package_version": "12.2", }, - "remote_java_tools_darwin_arm64": { - "aliases": [ - "remote_java_tools_test_darwin_arm64", - "remote_java_tools_darwin_arm64_for_testing", - ], - "archive": "java_tools_darwin_arm64-v12.2.zip", - "sha256": "d50209005c3bf1b7803be2ff47e56192836c4b0bdff20245456a2e0bd43a6914", + # JDK20 unavailable so use JDK19 instead for linux s390x. + "openjdk_linux_s390x_vanilla": { + "archive": "OpenJDK19U-jdk_s390x_linux_hotspot_19.0.2_7.tar.gz", + "sha256": "f2512f9a8e9847dd5d3557c39b485a8e7a1ef37b601dcbcb748d22e49f44815c", + "strip_prefix": "jdk-19.0.2+7", "urls": [ - "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.2/java_tools_darwin_arm64-v12.2.zip", - "https://github.com/bazelbuild/java_tools/releases/download/java_v12.2/java_tools_darwin_arm64-v12.2.zip", + "https://mirror.bazel.build/github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_s390x_linux_hotspot_19.0.2_7.tar.gz", + "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_s390x_linux_hotspot_19.0.2_7.tar.gz", ], "used_in": [ - "test_WORKSPACE_files", - ], - "package_version": "12.2", - }, - "remotejdk11_linux": { - "aliases": [ - "remotejdk11_linux_for_testing", - "openjdk11_linux_archive", - ], - "archive": "zulu11.56.19-ca-jdk11.0.15-linux_x64.tar.gz", - "sha256": "e064b61d93304012351242bf0823c6a2e41d9e28add7ea7f05378b7243d34247", - "strip_prefix": "zulu11.56.19-ca-jdk11.0.15-linux_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-linux_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-linux_x64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk11_linux_aarch64": { - "aliases": [ - "remotejdk11_linux_aarch64_for_testing", - ], - "archive": "zulu11.56.19-ca-jdk11.0.15-linux_aarch64.tar.gz", - "sha256": "fc7c41a0005180d4ca471c90d01e049469e0614cf774566d4cf383caa29d1a97", - "strip_prefix": "zulu11.56.19-ca-jdk11.0.15-linux_aarch64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu-embedded/bin/zulu11.56.19-ca-jdk11.0.15-linux_aarch64.tar.gz", - "https://cdn.azul.com/zulu-embedded/bin/zulu11.56.19-ca-jdk11.0.15-linux_aarch64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk11_linux_ppc64le": { - "aliases": [ - "remotejdk11_linux_ppc64le_for_testing", ], - "sha256": "a8fba686f6eb8ae1d1a9566821dbd5a85a1108b96ad857fdbac5c1e4649fc56f", - "strip_prefix": "jdk-11.0.15+10", - "urls": [ - "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz", - "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz", - ], - "used_in": [], }, - "remotejdk11_linux_s390x": { - "aliases": [ - "remotejdk11_linux_s390x_for_testing", - "openjdk11_linux_s390x_archive", - ], - "sha256": "a58fc0361966af0a5d5a31a2d8a208e3c9bb0f54f345596fd80b99ea9a39788b", - "strip_prefix": "jdk-11.0.15+10", + "openjdk_linux_ppc64le_vanilla": { + "archive": "OpenJDK20U-jdk_ppc64le_linux_hotspot_20_36.tar.gz", + "sha256": "45dde71faf8cbb78fab3c976894259655c8d3de827347f23e0ebe5710921dded", + "strip_prefix": "jdk-20+36", "urls": [ - "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz", - "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz", + "https://mirror.bazel.build/github.com/adoptium/temurin20-binaries/releases/download/jdk-20%2B36/OpenJDK20U-jdk_ppc64le_linux_hotspot_20_36.tar.gz", + "https://github.com/adoptium/temurin20-binaries/releases/download/jdk-20%2B36/OpenJDK20U-jdk_ppc64le_linux_hotspot_20_36.tar.gz", ], "used_in": [], }, - "remotejdk11_macos": { - "aliases": [ - "remotejdk11_macos_for_testing", - "openjdk11_darwin_archive", - ], - "archive": "zulu11.56.19-ca-jdk11.0.15-macosx_x64.tar.gz", - "sha256": "2614e5c5de8e989d4d81759de4c333aa5b867b17ab9ee78754309ba65c7f6f55", - "strip_prefix": "zulu11.56.19-ca-jdk11.0.15-macosx_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-macosx_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-macosx_x64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk11_macos_aarch64": { - "aliases": [ - "remotejdk11_macos_aarch64_for_testing", - "openjdk11_darwin_aarch64_archive", - ], - "archive": "zulu11.56.19-ca-jdk11.0.15-macosx_aarch64.tar.gz", - "sha256": "6bb0d2c6e8a29dcd9c577bbb2986352ba12481a9549ac2c0bcfd00ed60e538d2", - "strip_prefix": "zulu11.56.19-ca-jdk11.0.15-macosx_aarch64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-macosx_aarch64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-macosx_aarch64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk11_win": { - "aliases": [ - "remotejdk11_win_for_testing", - "openjdk11_windows_archive", - ], - "archive": "zulu11.56.19-ca-jdk11.0.15-win_x64.zip", - "sha256": "a106c77389a63b6bd963a087d5f01171bd32aa3ee7377ecef87531390dcb9050", - "strip_prefix": "zulu11.56.19-ca-jdk11.0.15-win_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-win_x64.zip", - "https://cdn.azul.com/zulu/bin/zulu11.56.19-ca-jdk11.0.15-win_x64.zip", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk17_win_arm64": { - "aliases": [ - "remotejdk17_win_arm64_for_testing", - "openjdk17_windows_arm64_archive", - "openjdk_win_arm64_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-win_aarch64.zip", - "sha256": "bc3476f2161bf99bc9a243ff535b8fc033b34ce9a2fa4b62fb8d79b6bfdc427f", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-win_aarch64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-win_aarch64.zip", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-win_aarch64.zip", - ], - "used_in": [ - "test_WORKSPACE_files", - ], - }, - "remotejdk11_win_arm64": { - "aliases": [ - "remotejdk11_win_arm64_for_testing", - "openjdk11_windows_arm64_archive", - ], - "archive": "microsoft-jdk-11.0.13.8.1-windows-aarch64.zip", - "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2", - "strip_prefix": "jdk-11.0.13+8", - "urls": [ - "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk17_linux": { - "aliases": [ - "remotejdk17_linux_for_testing", - "openjdk17_linux_archive", - "openjdk_linux_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-linux_x64.tar.gz", - "sha256": "20c91a922eec795f3181eaa70def8b99d8eac56047c9a14bfb257c85b991df1b", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-linux_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-linux_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-linux_x64.tar.gz", - ], - "used_in": [ - "test_WORKSPACE_files", - ], - }, - "remotejdk17_linux_aarch64": { - "aliases": [ - "remotejdk17_linux_aarch64_for_testing", - "openjdk17_linux_aarch64_archive", - "openjdk_linux_aarch64_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-linux_aarch64.tar.gz", - "sha256": "dbc6ae9163e7ff469a9ab1f342cd1bc1f4c1fb78afc3c4f2228ee3b32c4f3e43", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-linux_aarch64", + "openjdk_macos_x86_64_vanilla": { + "archive": "zulu20.30.11-ca-jdk20.0.1-macosx_x64.tar.gz", + "sha256": "befee9db92345d5146945061b721d3a6c6e182471c1536f87dbadfd5aab0e241", + "strip_prefix": "zulu20.30.11-ca-jdk20.0.1-macosx_x64", "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-linux_aarch64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-linux_aarch64.tar.gz", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-macosx_x64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-macosx_x64.tar.gz", ], "used_in": [ - "test_WORKSPACE_files", - ], - }, - "remotejdk17_linux_s390x": { - "aliases": [ - "remotejdk17_linux_s390x_for_testing", - "openjdk17_linux_s390x_archive", - "openjdk_linux_s390x_vanilla", - ], - "archive": "OpenJDK17U-jdk_s390x_linux_hotspot_17.0.4.1_1.tar.gz", - "sha256": "fdc82f4b06c880762503b0cb40e25f46cf8190d06011b3b768f4091d3334ef7f", - "strip_prefix": "jdk-17.0.4.1+1", - "urls": [ - "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.4.1_1.tar.gz", - "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.4.1_1.tar.gz", - ], - "used_in": [ - "test_WORKSPACE_files", - ], - }, - "remotejdk17_linux_ppc64le": { - "aliases": [ - "remotejdk17_linux_ppc64le_for_testing", - "openjdk_linux_ppc64le_vanilla", ], - "archive": "OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.4.1_1.tar.gz", - "sha256": "cbedd0a1428b3058d156e99e8e9bc8769e0d633736d6776a4c4d9136648f2fd1", - "strip_prefix": "jdk-17.0.4.1+1", - "urls": [ - "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.4.1_1.tar.gz", - "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.4.1_1.tar.gz", - ], - "used_in": [], }, - "remotejdk17_macos": { - "aliases": [ - "remotejdk17_macos_for_testing", - "openjdk17_darwin_archive", - "openjdk_macos_x86_64_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-macosx_x64.tar.gz", - "sha256": "e6317cee4d40995f0da5b702af3f04a6af2bbd55febf67927696987d11113b53", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-macosx_x64", + "openjdk_macos_aarch64_vanilla": { + "archive": "zulu20.30.11-ca-jdk20.0.1-macosx_aarch64.tar.gz", + "sha256": "01e59f0160d051524bb16d865652d25d00a85390581737a8f35f89057c80892d", + "strip_prefix": "zulu20.30.11-ca-jdk20.0.1-macosx_aarch64", "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-macosx_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-macosx_x64.tar.gz", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-macosx_aarch64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-macosx_aarch64.tar.gz", ], "used_in": [ - "test_WORKSPACE_files", ], }, - "remotejdk17_macos_aarch64": { - "aliases": [ - "remotejdk17_macos_aarch64_for_testing", - "openjdk17_darwin_aarch64_archive", - "openjdk_macos_aarch64_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-macosx_aarch64", - "sha256": "515dd56ec99bb5ae8966621a2088aadfbe72631818ffbba6e4387b7ee292ab09", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-macosx_aarch64", + "openjdk_win_vanilla": { + "archive": "zulu20.30.11-ca-jdk20.0.1-win_x64.zip", + "sha256": "8a97ee11da578292f7c9e772f3edd3f083fa4f34f47a98e3abefb625ab2225ba", + "strip_prefix": "zulu20.30.11-ca-jdk20.0.1-win_x64", "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-macosx_aarch64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-macosx_aarch64.tar.gz", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-win_x64.zip", + "https://cdn.azul.com/zulu/bin/zulu20.30.11-ca-jdk20.0.1-win_x64.zip", ], "used_in": [ - "test_WORKSPACE_files", ], }, - "remotejdk17_win": { - "aliases": [ - "remotejdk17_win_for_testing", - "openjdk17_windows_archive", - "openjdk_win_vanilla", - ], - "archive": "zulu17.38.21-ca-jdk17.0.5-win_x64.zip", - "sha256": "9972c5b62a61b45785d3d956c559e079d9e91f144ec46225f5deeda214d48f27", - "strip_prefix": "zulu17.38.21-ca-jdk17.0.5-win_x64", + # JDK20 unavailable so use JDK19 instead for win aarch64. + "openjdk_win_arm64_vanilla": { + "archive": "zulu19.28.81-ca-jdk19.0.0-win_aarch64.zip", + "sha256": "e73e851638066c48421a60e01ce7d956c1de0935620e1b66d8bbbd6cdd4f815e", + "strip_prefix": "zulu19.28.81-ca-jdk19.0.0-win_aarch64", "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-win_x64.zip", - "https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-win_x64.zip", + "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu19.28.81-ca-jdk19.0.0-win_aarch64.zip", + "https://cdn.azul.com/zulu/bin/zulu19.28.81-ca-jdk19.0.0-win_aarch64.zip", ], "used_in": [ - "test_WORKSPACE_files", - ], - }, - "remotejdk20_linux_aarch64": { - "aliases": [ - "remotejdk20_linux_for_testing", - ], - "archive": "zulu20.28.85-ca-jdk20.0.0-linux_aarch64.tar.gz", - "sha256": "47ce58ead9a05d5d53b96706ff6fa0eb2e46755ee67e2b416925e28f5b55038a", - "strip_prefix": "zulu20.28.85-ca-jdk20.0.0-linux_aarch64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-linux_aarch64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-linux_aarch64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk20_linux": { - "aliases": [ - "remotejdk20_linux_for_testing", - "openjdk20_linux_archive", - ], - "archive": "zulu20.28.85-ca-jdk20.0.0-linux_x64.tar.gz", - "sha256": "0386418db7f23ae677d05045d30224094fc13423593ce9cd087d455069893bac", - "strip_prefix": "zulu20.28.85-ca-jdk20.0.0-linux_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-linux_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-linux_x64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk20_macos": { - "aliases": [ - "remotejdk20_macos_for_testing", - "openjdk20_darwin_archive", - ], - "archive": "zulu20.28.85-ca-jdk20.0.0-macosx_x64.tar.gz", - "sha256": "fde6cc17a194ea0d9b0c6c0cb6178199d8edfc282d649eec2c86a9796e843f86", - "strip_prefix": "zulu20.28.85-ca-jdk20.0.0-macosx_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-macosx_x64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-macosx_x64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk20_macos_aarch64": { - "aliases": [ - "remotejdk20_macos_aarch64_for_testing", - "openjdk20_darwin_aarch64_archive", - ], - "archive": "zulu20.28.85-ca-jdk20.0.0-macosx_aarch64.tar.gz", - "sha256": "a2eff6a940c2df3a2352278027e83f5959f34dcfc8663034fe92be0f1b91ce6f", - "strip_prefix": "zulu20.28.85-ca-jdk20.0.0-macosx_aarch64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-macosx_aarch64.tar.gz", - "https://cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-macosx_aarch64.tar.gz", - ], - "used_in": ["test_WORKSPACE_files"], - }, - "remotejdk20_win": { - "aliases": [ - "remotejdk20_win_for_testing", - "openjdk20_windows_archive", - ], - "archive": "zulu20.28.85-ca-jdk20.0.0-win_x64.zip", - "sha256": "ac5f6a7d84dbbb0bb4d376feb331cc4c49a9920562f2a5e85b7a6b4863b10e1e", - "strip_prefix": "zulu20.28.85-ca-jdk20.0.0-win_x64", - "urls": [ - "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-win_x64.zip", - "https://cdn.azul.com/zulu/bin/zulu20.28.85-ca-jdk20.0.0-win_x64.zip", ], - "used_in": ["test_WORKSPACE_files"], }, } diff --git a/examples/Readme.md b/examples/Readme.md new file mode 100644 index 00000000000000..82e220c2a5682b --- /dev/null +++ b/examples/Readme.md @@ -0,0 +1,3 @@ +# Bazel examples (Deprecated) + +This folder example is deprecated. In the future this folder will be deleted and all examples will be available in . diff --git a/maven_install.json b/maven_install.json index b61a7bec2772bb..6abdccf2de2a85 100644 --- a/maven_install.json +++ b/maven_install.json @@ -1,3928 +1,2201 @@ { - "dependency_tree": { - "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 904495294, - "__RESOLVED_ARTIFACTS_HASH": 477937832, - "conflict_resolution": {}, - "dependencies": [ - { - "coord": "com.beust:jcommander:1.82", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/beust/jcommander/1.82/jcommander-1.82.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/beust/jcommander/1.82/jcommander-1.82.jar" - ], - "packages": [ - "com.beust.ah", - "com.beust.jcommander", - "com.beust.jcommander.converters", - "com.beust.jcommander.defaultprovider", - "com.beust.jcommander.internal", - "com.beust.jcommander.parser", - "com.beust.jcommander.validators" - ], - "sha256": "deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1", - "url": "https://repo1.maven.org/maven2/com/beust/jcommander/1.82/jcommander-1.82.jar" - }, - { - "coord": "com.github.ben-manes.caffeine:caffeine:3.0.5", - "dependencies": [ - "com.google.errorprone:error_prone_annotations:2.18.0", - "org.checkerframework:checker-qual:3.19.0" - ], - "directDependencies": [ - "com.google.errorprone:error_prone_annotations:2.18.0", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar" - ], - "packages": [ - "com.github.benmanes.caffeine.cache", - "com.github.benmanes.caffeine.cache.stats" - ], - "sha256": "8a9b54d3506a3b92ee46b217bcee79196b21ca6d52dc2967c686a205fb2f9c15", - "url": "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar" - }, - { - "coord": "com.github.kevinstern:software-and-algorithms:1.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/github/kevinstern/software-and-algorithms/1.0/software-and-algorithms-1.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/github/kevinstern/software-and-algorithms/1.0/software-and-algorithms-1.0.jar" - ], - "packages": [ - "blogspot.software_and_algorithms.stern_library.data_structure", - "blogspot.software_and_algorithms.stern_library.geometry", - "blogspot.software_and_algorithms.stern_library.optimization", - "blogspot.software_and_algorithms.stern_library.string" - ], - "sha256": "61ab82439cef37343b14f53154c461619375373a56b9338e895709fb54e0864c", - "url": "https://repo1.maven.org/maven2/com/github/kevinstern/software-and-algorithms/1.0/software-and-algorithms-1.0.jar" - }, - { - "coord": "com.github.stephenc.jcip:jcip-annotations:1.0-1", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar" - ], - "packages": [ - "net.jcip.annotations" - ], - "sha256": "4fccff8382aafc589962c4edb262f6aa595e34f1e11e61057d1c6a96e8fc7323", - "url": "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar" - }, - { - "coord": "com.google.android:annotations:4.1.1.4", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar" - ], - "packages": [ - "android.annotation" - ], - "sha256": "ba734e1e84c09d615af6a09d33034b4f0442f8772dec120efb376d86a565ae15", - "url": "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar" - }, - { - "coord": "com.google.api-client:google-api-client-gson:1.35.2", - "dependencies": [ - "com.google.api-client:google-api-client:1.35.2", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.9.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:failureaccess:1.0.1", - "com.google.guava:guava:31.1-jre", - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "com.google.http-client:google-http-client-apache-v2:1.42.0", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0", - "com.google.j2objc:j2objc-annotations:1.3", - "com.google.oauth-client:google-oauth-client:1.34.1", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1", - "org.checkerframework:checker-qual:3.19.0" - ], - "directDependencies": [ - "com.google.api-client:google-api-client:1.35.2", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/api-client/google-api-client-gson/1.35.2/google-api-client-gson-1.35.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/api-client/google-api-client-gson/1.35.2/google-api-client-gson-1.35.2.jar" - ], - "packages": [ - "com.google.api.client.googleapis.notifications.json.gson" - ], - "sha256": "54e5be675e5c2ab0958647fcaa35c14bd8f7c08358c634f5ab786e4ed7268576", - "url": "https://repo1.maven.org/maven2/com/google/api-client/google-api-client-gson/1.35.2/google-api-client-gson-1.35.2.jar" - }, - { - "coord": "com.google.api-client:google-api-client:1.35.2", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.9.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:failureaccess:1.0.1", - "com.google.guava:guava:31.1-jre", - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "com.google.http-client:google-http-client-apache-v2:1.42.0", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0", - "com.google.j2objc:j2objc-annotations:1.3", - "com.google.oauth-client:google-oauth-client:1.34.1", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1", - "org.checkerframework:checker-qual:3.19.0" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client-apache-v2:1.42.0", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0", - "com.google.oauth-client:google-oauth-client:1.34.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/api-client/google-api-client/1.35.2/google-api-client-1.35.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/api-client/google-api-client/1.35.2/google-api-client-1.35.2.jar" - ], - "packages": [ - "com.google.api.client.googleapis", - "com.google.api.client.googleapis.apache", - "com.google.api.client.googleapis.apache.v2", - "com.google.api.client.googleapis.auth.oauth2", - "com.google.api.client.googleapis.batch", - "com.google.api.client.googleapis.batch.json", - "com.google.api.client.googleapis.compute", - "com.google.api.client.googleapis.javanet", - "com.google.api.client.googleapis.json", - "com.google.api.client.googleapis.media", - "com.google.api.client.googleapis.mtls", - "com.google.api.client.googleapis.notifications", - "com.google.api.client.googleapis.notifications.json", - "com.google.api.client.googleapis.services", - "com.google.api.client.googleapis.services.json", - "com.google.api.client.googleapis.testing", - "com.google.api.client.googleapis.testing.auth.oauth2", - "com.google.api.client.googleapis.testing.compute", - "com.google.api.client.googleapis.testing.json", - "com.google.api.client.googleapis.testing.notifications", - "com.google.api.client.googleapis.testing.services", - "com.google.api.client.googleapis.testing.services.json", - "com.google.api.client.googleapis.util" - ], - "sha256": "f195cd6228d3f99fa7e30ff2dee60ad0f2c7923be31399a7dcdc1abd679aa22e", - "url": "https://repo1.maven.org/maven2/com/google/api-client/google-api-client/1.35.2/google-api-client-1.35.2.jar" - }, - { - "coord": "com.google.api.grpc:proto-google-common-protos:2.9.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "com.google.api:api-common", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.9.0/proto-google-common-protos-2.9.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.9.0/proto-google-common-protos-2.9.0.jar" - ], - "packages": [ - "com.google.api", - "com.google.cloud", - "com.google.cloud.audit", - "com.google.cloud.location", - "com.google.geo.type", - "com.google.logging.type", - "com.google.longrunning", - "com.google.rpc", - "com.google.rpc.context", - "com.google.type" - ], - "sha256": "0d830380ec66bd7e25eee63aa0a5a08578e46ad187fb72d99b44d9ba22827f91", - "url": "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.9.0/proto-google-common-protos-2.9.0.jar" - }, - { - "coord": "com.google.auth:google-auth-library-credentials:1.6.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/1.6.0/google-auth-library-credentials-1.6.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/1.6.0/google-auth-library-credentials-1.6.0.jar" - ], - "packages": [ - "com.google.auth" - ], - "sha256": "153fa3cdc153ac3ee25649e8037aeda4438256153d35acf3c27e83e4ee6165a4", - "url": "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/1.6.0/google-auth-library-credentials-1.6.0.jar" - }, - { - "coord": "com.google.auth:google-auth-library-oauth2-http:1.6.0", - "dependencies": [ - "com.google.auth:google-auth-library-credentials:1.6.0", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0" - ], - "directDependencies": [ - "com.google.auth:google-auth-library-credentials:1.6.0", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/1.6.0/google-auth-library-oauth2-http-1.6.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/1.6.0/google-auth-library-oauth2-http-1.6.0.jar" - ], - "packages": [ - "com.google.auth.http", - "com.google.auth.oauth2" - ], - "sha256": "2220f02fcfc480e3798bab43b2618d158319f9fcb357c9eb04b4a68117699808", - "url": "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/1.6.0/google-auth-library-oauth2-http-1.6.0.jar" - }, - { - "coord": "com.google.auto.service:auto-service-annotations:1.0.1", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar" - ], - "packages": [ - "com.google.auto.service" - ], - "sha256": "c7bec54b7b5588b5967e870341091c5691181d954cf2039f1bf0a6eeb837473b", - "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar" - }, - { - "coord": "com.google.auto.service:auto-service:1.0", - "dependencies": [ - "com.google.auto.service:auto-service-annotations:1.0.1", - "com.google.auto:auto-common:1.2.1", - "com.google.guava:guava:31.1-jre" - ], - "directDependencies": [ - "com.google.auto.service:auto-service-annotations:1.0.1", - "com.google.auto:auto-common:1.2.1", - "com.google.guava:guava:31.1-jre" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar" - ], - "packages": [ - "com.google.auto.service.processor" - ], - "sha256": "4ae44dd05b49a1109a463c0d2aaf920c24f76d1e996bb89f29481c4ff75ec526", - "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar" - }, - { - "coord": "com.google.auto.value:auto-value-annotations:1.9", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar" - ], - "packages": [ - "com.google.auto.value", - "com.google.auto.value.extension.memoized", - "com.google.auto.value.extension.serializable", - "com.google.auto.value.extension.toprettystring" - ], - "sha256": "fa5469f4c44ee598a2d8f033ab0a9dcbc6498a0c5e0c998dfa0c2adf51358044", - "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar" - }, - { - "coord": "com.google.auto.value:auto-value:1.8.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar" - ], - "packages": [ - "autovalue.shaded.com.google$.auto.common", - "autovalue.shaded.com.google$.auto.service", - "autovalue.shaded.com.google$.common.annotations", - "autovalue.shaded.com.google$.common.base", - "autovalue.shaded.com.google$.common.collect", - "autovalue.shaded.com.google$.common.hash", - "autovalue.shaded.com.google$.common.math", - "autovalue.shaded.com.google$.common.primitives", - "autovalue.shaded.com.google$.common.reflect", - "autovalue.shaded.com.google$.errorprone.annotations", - "autovalue.shaded.com.google$.errorprone.annotations.concurrent", - "autovalue.shaded.com.google$.escapevelocity", - "autovalue.shaded.com.google$.j2objc.annotations", - "autovalue.shaded.com.squareup.javapoet$", - "autovalue.shaded.net.ltgt.gradle.incap$", - "autovalue.shaded.org.checkerframework$.checker.nullness.qual", - "autovalue.shaded.org.checkerframework$.framework.qual", - "com.google.auto.value.extension", - "com.google.auto.value.extension.memoized.processor", - "com.google.auto.value.extension.serializable.processor", - "com.google.auto.value.extension.serializable.serializer", - "com.google.auto.value.extension.serializable.serializer.impl", - "com.google.auto.value.extension.serializable.serializer.interfaces", - "com.google.auto.value.extension.serializable.serializer.runtime", - "com.google.auto.value.extension.toprettystring.processor", - "com.google.auto.value.processor" - ], - "sha256": "2067b788d4c1c96fd621ad861053a5c4d8a801cfafc77fec20d49a6e9340a745", - "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar" - }, - { - "coord": "com.google.auto:auto-common:1.2.1", - "dependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar" - ], - "packages": [ - "com.google.auto.common" - ], - "sha256": "f43f29fe2a6ebaf04b2598cdeec32a4e346d49a9404e990f5fc19c19f3a28d0e", - "url": "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar" - }, - { - "coord": "com.google.code.findbugs:jsr305:3.0.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - ], - "packages": [ - "javax.annotation", - "javax.annotation.concurrent", - "javax.annotation.meta" - ], - "sha256": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", - "url": "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" - }, - { - "coord": "com.google.code.gson:gson:2.9.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar" - ], - "packages": [ - "com.google.gson", - "com.google.gson.annotations", - "com.google.gson.internal", - "com.google.gson.internal.bind", - "com.google.gson.internal.bind.util", - "com.google.gson.internal.reflect", - "com.google.gson.internal.sql", - "com.google.gson.reflect", - "com.google.gson.stream" - ], - "sha256": "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d", - "url": "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar" - }, - { - "coord": "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", - "dependencies": [ - "com.google.guava:guava:31.1-jre", - "javax.annotation:javax.annotation-api:1.3.2", - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-commons:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm-util:9.2", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre", - "javax.annotation:javax.annotation-api:1.3.2", - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-commons:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm-util:9.2", - "org.ow2.asm:asm:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar" - ], - "packages": [ - "com.google.monitoring.runtime.instrumentation", - "com.google.monitoring.runtime.instrumentation.asm", - "com.google.monitoring.runtime.instrumentation.asm.commons", - "com.google.monitoring.runtime.instrumentation.asm.signature", - "com.google.monitoring.runtime.instrumentation.asm.tree", - "com.google.monitoring.runtime.instrumentation.asm.tree.analysis", - "com.google.monitoring.runtime.instrumentation.asm.util", - "com.google.monitoring.runtime.instrumentation.checker.nullness.compatqual", - "com.google.monitoring.runtime.instrumentation.common.annotations", - "com.google.monitoring.runtime.instrumentation.common.base", - "com.google.monitoring.runtime.instrumentation.common.base.internal", - "com.google.monitoring.runtime.instrumentation.common.cache", - "com.google.monitoring.runtime.instrumentation.common.collect", - "com.google.monitoring.runtime.instrumentation.common.escape", - "com.google.monitoring.runtime.instrumentation.common.eventbus", - "com.google.monitoring.runtime.instrumentation.common.graph", - "com.google.monitoring.runtime.instrumentation.common.hash", - "com.google.monitoring.runtime.instrumentation.common.html", - "com.google.monitoring.runtime.instrumentation.common.io", - "com.google.monitoring.runtime.instrumentation.common.math", - "com.google.monitoring.runtime.instrumentation.common.net", - "com.google.monitoring.runtime.instrumentation.common.primitives", - "com.google.monitoring.runtime.instrumentation.common.reflect", - "com.google.monitoring.runtime.instrumentation.common.util.concurrent", - "com.google.monitoring.runtime.instrumentation.common.xml", - "com.google.monitoring.runtime.instrumentation.errorprone.annotations", - "com.google.monitoring.runtime.instrumentation.errorprone.annotations.concurrent", - "com.google.monitoring.runtime.instrumentation.j2objc.annotations", - "com.google.thirdparty.publicsuffix" - ], - "sha256": "1ef5535a8bd41cf3072469f381b9ee6ab28275311a7499f53d6e52adf976fef0", - "url": "https://repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar" - }, - { - "coord": "com.google.errorprone:error_prone_annotation:2.18.0", - "dependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotation/2.18.0/error_prone_annotation-2.18.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotation/2.18.0/error_prone_annotation-2.18.0.jar" - ], - "packages": [ - "com.google.errorprone" - ], - "sha256": "6e5c594971265b03d39b8fb40a5d92f073ae1d98e47d37a3a3f2702e4e31f267", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotation/2.18.0/error_prone_annotation-2.18.0.jar" - }, - { - "coord": "com.google.errorprone:error_prone_annotations:2.18.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar" - ], - "packages": [ - "com.google.errorprone.annotations", - "com.google.errorprone.annotations.concurrent" - ], - "sha256": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar" - }, - { - "coord": "com.google.errorprone:error_prone_check_api:2.18.0", - "dependencies": [ - "com.github.ben-manes.caffeine:caffeine:3.0.5", - "com.github.kevinstern:software-and-algorithms:1.0", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotation:2.18.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.github.java-diff-utils:java-diff-utils:4.0", - "org.checkerframework:checker-qual:3.19.0", - "org.checkerframework:dataflow-errorprone:3.27.0" - ], - "directDependencies": [ - "com.github.ben-manes.caffeine:caffeine:3.0.5", - "com.github.kevinstern:software-and-algorithms:1.0", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotation:2.18.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "io.github.java-diff-utils:java-diff-utils:4.0", - "org.checkerframework:dataflow-errorprone:3.27.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_check_api/2.18.0/error_prone_check_api-2.18.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_check_api/2.18.0/error_prone_check_api-2.18.0.jar" - ], - "packages": [ - "com.google.errorprone", - "com.google.errorprone.apply", - "com.google.errorprone.bugpatterns", - "com.google.errorprone.dataflow", - "com.google.errorprone.dataflow.nullnesspropagation", - "com.google.errorprone.dataflow.nullnesspropagation.inference", - "com.google.errorprone.fixes", - "com.google.errorprone.matchers", - "com.google.errorprone.matchers.method", - "com.google.errorprone.names", - "com.google.errorprone.predicates", - "com.google.errorprone.predicates.type", - "com.google.errorprone.scanner", - "com.google.errorprone.suppliers", - "com.google.errorprone.util" - ], - "sha256": "6c34578691c4fae9bced50b2a3fe8b4e0420469fb0770655a3ea41ed2a9e40a4", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_check_api/2.18.0/error_prone_check_api-2.18.0.jar" - }, - { - "coord": "com.google.errorprone:error_prone_core:2.18.0", - "dependencies": [ - "com.github.ben-manes.caffeine:caffeine:3.0.5", - "com.github.kevinstern:software-and-algorithms:1.0", - "com.google.auto.service:auto-service-annotations:1.0.1", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.auto:auto-common:1.2.1", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotation:2.18.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.errorprone:error_prone_check_api:2.18.0", - "com.google.errorprone:error_prone_type_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.github.java-diff-utils:java-diff-utils:4.0", - "javax.inject:javax.inject:1", - "org.checkerframework:checker-qual:3.19.0", - "org.checkerframework:dataflow-errorprone:3.27.0", - "org.pcollections:pcollections:3.1.4" - ], - "directDependencies": [ - "com.google.auto.service:auto-service-annotations:1.0.1", - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.auto:auto-common:1.2.1", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotation:2.18.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.errorprone:error_prone_check_api:2.18.0", - "com.google.errorprone:error_prone_type_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "javax.inject:javax.inject:1", - "org.checkerframework:dataflow-errorprone:3.27.0", - "org.pcollections:pcollections:3.1.4" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.18.0/error_prone_core-2.18.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.18.0/error_prone_core-2.18.0.jar" - ], - "packages": [ - "com.google.errorprone", - "com.google.errorprone.bugpatterns", - "com.google.errorprone.bugpatterns.android", - "com.google.errorprone.bugpatterns.apidiff", - "com.google.errorprone.bugpatterns.argumentselectiondefects", - "com.google.errorprone.bugpatterns.checkreturnvalue", - "com.google.errorprone.bugpatterns.collectionincompatibletype", - "com.google.errorprone.bugpatterns.flogger", - "com.google.errorprone.bugpatterns.formatstring", - "com.google.errorprone.bugpatterns.inject", - "com.google.errorprone.bugpatterns.inject.dagger", - "com.google.errorprone.bugpatterns.inject.guice", - "com.google.errorprone.bugpatterns.inlineme", - "com.google.errorprone.bugpatterns.javadoc", - "com.google.errorprone.bugpatterns.nullness", - "com.google.errorprone.bugpatterns.overloading", - "com.google.errorprone.bugpatterns.threadsafety", - "com.google.errorprone.bugpatterns.time", - "com.google.errorprone.refaster", - "com.google.errorprone.refaster.annotation", - "com.google.errorprone.scanner" - ], - "sha256": "eabbecefbb40c8ab7c2f17b5ef1715a8065f6b9718d4a02cf91850e65bfcc241", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.18.0/error_prone_core-2.18.0.jar" - }, - { - "coord": "com.google.errorprone:error_prone_type_annotations:2.18.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar" - ], - "packages": [ - "com.google.errorprone.annotations" - ], - "sha256": "d2ab73bc6807277f7463391504313e47bc3465ab1916339c8e82be633a9ab375", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar" - }, - { - "coord": "com.google.flogger:flogger-system-backend:0.5.1", - "dependencies": [ - "com.google.flogger:flogger:0.5.1", - "org.checkerframework:checker-compat-qual:2.5.3" - ], - "directDependencies": [ - "com.google.flogger:flogger:0.5.1", - "org.checkerframework:checker-compat-qual:2.5.3" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar" - ], - "packages": [ - "com.google.common.flogger.backend.system" - ], - "sha256": "685de33b53eb313049bbeee7f4b7a80dd09e8e754e96b048a3edab2cebb36442", - "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar" - }, - { - "coord": "com.google.flogger:flogger:0.5.1", - "dependencies": [ - "com.google.flogger:flogger:0.5.1", - "org.checkerframework:checker-compat-qual:2.5.3" - ], - "directDependencies": [ - "com.google.flogger:flogger:0.5.1", - "org.checkerframework:checker-compat-qual:2.5.3" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar" - ], - "packages": [ - "com.google.common.flogger", - "com.google.common.flogger.backend", - "com.google.common.flogger.context", - "com.google.common.flogger.parameter", - "com.google.common.flogger.parser", - "com.google.common.flogger.util" - ], - "sha256": "b5ecd1483e041197012786f749968a62063c1964d3ecfbf96ba92a95797bb8f5", - "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar" - }, - { - "coord": "com.google.flogger:google-extensions:0.5.1", - "dependencies": [ - "com.google.flogger:flogger:0.5.1", - "org.checkerframework:checker-compat-qual:2.5.3" - ], - "directDependencies": [ - "com.google.flogger:flogger:0.5.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar" - ], - "packages": [ - "com.google.common.flogger" - ], - "sha256": "8b0862cad85b9549f355fe383c6c63816d2f19529634e033ae06d0107ab110b9", - "url": "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar" - }, - { - "coord": "com.google.guava:failureaccess:1.0.1", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - ], - "packages": [ - "com.google.common.util.concurrent.internal" - ], - "sha256": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26", - "url": "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" - }, - { - "coord": "com.google.guava:guava-testlib:31.1-jre", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:failureaccess:1.0.1", - "com.google.guava:guava:31.1-jre", - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "com.google.j2objc:j2objc-annotations:1.3", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.hamcrest:hamcrest-core:1.3" - ], - "directDependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.j2objc:j2objc-annotations:1.3", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava-testlib/31.1-jre/guava-testlib-31.1-jre.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/guava/guava-testlib/31.1-jre/guava-testlib-31.1-jre.jar" - ], - "packages": [ - "com.google.common.collect.testing", - "com.google.common.collect.testing.features", - "com.google.common.collect.testing.google", - "com.google.common.collect.testing.testers", - "com.google.common.escape.testing", - "com.google.common.testing", - "com.google.common.util.concurrent.testing" - ], - "sha256": "aadc71b10d5c3ac474dd16be84cfb18d257e584d1e0a59f8cab64ef4376226ce", - "url": "https://repo1.maven.org/maven2/com/google/guava/guava-testlib/31.1-jre/guava-testlib-31.1-jre.jar" - }, - { - "coord": "com.google.guava:guava:31.1-jre", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:failureaccess:1.0.1", - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "com.google.j2objc:j2objc-annotations:1.3", - "org.checkerframework:checker-qual:3.19.0" - ], - "directDependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:failureaccess:1.0.1", - "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "com.google.j2objc:j2objc-annotations:1.3", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar" - ], - "packages": [ - "com.google.common.annotations", - "com.google.common.base", - "com.google.common.base.internal", - "com.google.common.cache", - "com.google.common.collect", - "com.google.common.escape", - "com.google.common.eventbus", - "com.google.common.graph", - "com.google.common.hash", - "com.google.common.html", - "com.google.common.io", - "com.google.common.math", - "com.google.common.net", - "com.google.common.primitives", - "com.google.common.reflect", - "com.google.common.util.concurrent", - "com.google.common.xml", - "com.google.thirdparty.publicsuffix" - ], - "sha256": "a42edc9cab792e39fe39bb94f3fca655ed157ff87a8af78e1d6ba5b07c4a00ab", - "url": "https://repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar" - }, - { - "coord": "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - ], - "packages": [], - "sha256": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99", - "url": "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" - }, - { - "coord": "com.google.http-client:google-http-client-apache-v2:1.42.0", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client:1.42.0", - "com.google.j2objc:j2objc-annotations:1.3", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1" - ], - "directDependencies": [ - "com.google.http-client:google-http-client:1.42.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client-apache-v2/1.42.0/google-http-client-apache-v2-1.42.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-apache-v2/1.42.0/google-http-client-apache-v2-1.42.0.jar" - ], - "packages": [ - "com.google.api.client.http.apache.v2" - ], - "sha256": "1fc4964236b67cf3c5651d7ac1dff668f73b7810c7f1dc0862a0e5bc01608785", - "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-apache-v2/1.42.0/google-http-client-apache-v2-1.42.0.jar" - }, - { - "coord": "com.google.http-client:google-http-client-gson:1.42.0", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.9.0", - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client:1.42.0", - "com.google.j2objc:j2objc-annotations:1.3", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1" - ], - "directDependencies": [ - "com.google.code.gson:gson:2.9.0", - "com.google.http-client:google-http-client:1.42.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client-gson/1.42.0/google-http-client-gson-1.42.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-gson/1.42.0/google-http-client-gson-1.42.0.jar" - ], - "packages": [ - "com.google.api.client.json.gson" - ], - "sha256": "cb852272c1cb0c8449d8b1a70f3e0f2c1efb2063e543183faa43078fb446f540", - "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-gson/1.42.0/google-http-client-gson-1.42.0.jar" - }, - { - "coord": "com.google.http-client:google-http-client:1.42.0", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "com.google.j2objc:j2objc-annotations:1.3", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1" - ], - "directDependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "com.google.j2objc:j2objc-annotations:1.3", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client/1.42.0/google-http-client-1.42.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/http-client/google-http-client/1.42.0/google-http-client-1.42.0.jar" - ], - "packages": [ - "com.google.api.client.http", - "com.google.api.client.http.apache", - "com.google.api.client.http.javanet", - "com.google.api.client.http.json", - "com.google.api.client.json", - "com.google.api.client.json.rpc2", - "com.google.api.client.json.webtoken", - "com.google.api.client.testing.http", - "com.google.api.client.testing.http.apache", - "com.google.api.client.testing.http.javanet", - "com.google.api.client.testing.json", - "com.google.api.client.testing.json.webtoken", - "com.google.api.client.testing.util", - "com.google.api.client.util", - "com.google.api.client.util.escape", - "com.google.api.client.util.store" - ], - "sha256": "82ca0e08171846d1768d5ac3f13244d6fe5a54102c14735ef40bf15d57d478e5", - "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client/1.42.0/google-http-client-1.42.0.jar" - }, - { - "coord": "com.google.j2objc:j2objc-annotations:1.3", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - ], - "packages": [ - "com.google.j2objc.annotations" - ], - "sha256": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b", - "url": "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" - }, - { - "coord": "com.google.jimfs:jimfs:1.2", - "dependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar" - ], - "packages": [ - "com.google.common.jimfs" - ], - "sha256": "de16d5c8489729a8512f1a02fbd81f58f89249b72066987da4cc5c87ecb9f72d", - "url": "https://repo1.maven.org/maven2/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar" - }, - { - "coord": "com.google.oauth-client:google-oauth-client:1.34.1", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.9.0", - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0", - "com.google.j2objc:j2objc-annotations:1.3", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1", - "io.opencensus:opencensus-contrib-http-util:0.31.1" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre", - "com.google.http-client:google-http-client-gson:1.42.0", - "com.google.http-client:google-http-client:1.42.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.34.1/google-oauth-client-1.34.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.34.1/google-oauth-client-1.34.1.jar" - ], - "packages": [ - "com.google.api.client.auth.oauth", - "com.google.api.client.auth.oauth2", - "com.google.api.client.auth.openidconnect" - ], - "sha256": "193edf97aefa28b93c5892bdc598bac34fa4c396588030084f290b1440e8b98a", - "url": "https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.34.1/google-oauth-client-1.34.1.jar" - }, - { - "coord": "com.google.testing.compile:compile-testing:0.18", - "dependencies": [ - "com.google.auto.value:auto-value:1.8.2", - "com.google.auto:auto-common:1.2.1", - "com.google.guava:guava:31.1-jre", - "com.google.truth:truth:1.1.3", - "junit:junit:4.13.2" - ], - "directDependencies": [ - "com.google.auto.value:auto-value:1.8.2", - "com.google.auto:auto-common:1.2.1", - "com.google.guava:guava:31.1-jre", - "com.google.truth:truth:1.1.3", - "junit:junit:4.13.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/testing/compile/compile-testing/0.18/compile-testing-0.18.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/testing/compile/compile-testing/0.18/compile-testing-0.18.jar" - ], - "packages": [ - "com.google.testing.compile" - ], - "sha256": "92cfbee5ad356a403d36688ab7bae74be65db9a117478ace34ac3ab4d1f9feb9", - "url": "https://repo1.maven.org/maven2/com/google/testing/compile/compile-testing/0.18/compile-testing-0.18.jar" - }, - { - "coord": "com.google.truth.extensions:truth-java8-extension:1.1.3", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.truth:truth:1.1.3", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.hamcrest:hamcrest-core:1.3", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "com.google.truth:truth:1.1.3", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/truth/extensions/truth-java8-extension/1.1.3/truth-java8-extension-1.1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-java8-extension/1.1.3/truth-java8-extension-1.1.3.jar" - ], - "packages": [ - "com.google.common.truth" - ], - "sha256": "2bbd32dd2fa9470d17f1bbda4f52b33b60bce4574052c1d46610a0aa371fc446", - "url": "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-java8-extension/1.1.3/truth-java8-extension-1.1.3.jar" - }, - { - "coord": "com.google.truth.extensions:truth-liteproto-extension:1.1.3", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.truth:truth:1.1.3", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.hamcrest:hamcrest-core:1.3", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.truth:truth:1.1.3", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/truth/extensions/truth-liteproto-extension/1.1.3/truth-liteproto-extension-1.1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-liteproto-extension/1.1.3/truth-liteproto-extension-1.1.3.jar" - ], - "packages": [ - "com.google.common.truth.extensions.proto" - ], - "sha256": "71cce6284554e546d1b5ba48e310ee4b4050676f09fb0eced136d779284ff78d", - "url": "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-liteproto-extension/1.1.3/truth-liteproto-extension-1.1.3.jar" - }, - { - "coord": "com.google.truth.extensions:truth-proto-extension:1.1.3", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.truth.extensions:truth-liteproto-extension:1.1.3", - "com.google.truth:truth:1.1.3", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.hamcrest:hamcrest-core:1.3", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "com.google.truth.extensions:truth-liteproto-extension:1.1.3", - "com.google.truth:truth:1.1.3", - "org.checkerframework:checker-qual:3.19.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/truth/extensions/truth-proto-extension/1.1.3/truth-proto-extension-1.1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-proto-extension/1.1.3/truth-proto-extension-1.1.3.jar" - ], - "packages": [ - "com.google.common.truth.extensions.proto" - ], - "sha256": "821993e4794e7034ae4a7b68105ef83f1913f0de6112f2fe4b5a7130f6a2bf49", - "url": "https://repo1.maven.org/maven2/com/google/truth/extensions/truth-proto-extension/1.1.3/truth-proto-extension-1.1.3.jar" - }, - { - "coord": "com.google.truth:truth:1.1.3", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.hamcrest:hamcrest-core:1.3", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "junit:junit:4.13.2", - "org.checkerframework:checker-qual:3.19.0", - "org.ow2.asm:asm:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar" - ], - "packages": [ - "com.google.common.truth" - ], - "sha256": "fc0b67782289a2aabfddfdf99eff1dcd5edc890d49143fcd489214b107b8f4f3", - "url": "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar" - }, - { - "coord": "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.auto.value:auto-value:1.8.2", - "com.google.code.gson:gson:2.9.0", - "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", - "com.squareup:javapoet:1.12.0", - "io.sweers.autotransient:autotransient:1.0.0" - ], - "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.auto.value:auto-value:1.8.2", - "com.google.code.gson:gson:2.9.0", - "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", - "com.squareup:javapoet:1.12.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar" - ], - "packages": [ - "autovaluegson.shaded.com.google.auto.common", - "autovaluegson.shaded.com.google.common.annotations", - "autovaluegson.shaded.com.google.common.base", - "autovaluegson.shaded.com.google.common.cache", - "autovaluegson.shaded.com.google.common.collect", - "autovaluegson.shaded.com.google.common.escape", - "autovaluegson.shaded.com.google.common.eventbus", - "autovaluegson.shaded.com.google.common.graph", - "autovaluegson.shaded.com.google.common.hash", - "autovaluegson.shaded.com.google.common.html", - "autovaluegson.shaded.com.google.common.io", - "autovaluegson.shaded.com.google.common.math", - "autovaluegson.shaded.com.google.common.net", - "autovaluegson.shaded.com.google.common.primitives", - "autovaluegson.shaded.com.google.common.reflect", - "autovaluegson.shaded.com.google.common.util.concurrent", - "autovaluegson.shaded.com.google.common.xml", - "com.ryanharter.auto.value.gson" - ], - "sha256": "261be84be30a56994e132d718a85efcd579197a2edb9426b84c5722c56955eca", - "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar" - }, - { - "coord": "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1", - "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.auto.value:auto-value:1.8.2", - "com.google.code.gson:gson:2.9.0", - "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1", - "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", - "com.squareup:javapoet:1.12.0", - "io.sweers.autotransient:autotransient:1.0.0" - ], - "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.9", - "com.google.code.gson:gson:2.9.0", - "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1", - "com.squareup:javapoet:1.12.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar" - ], - "packages": [ - "autovaluegson.factory.shaded.com.google.auto.common", - "autovaluegson.factory.shaded.com.google.common.annotations", - "autovaluegson.factory.shaded.com.google.common.base", - "autovaluegson.factory.shaded.com.google.common.cache", - "autovaluegson.factory.shaded.com.google.common.collect", - "autovaluegson.factory.shaded.com.google.common.escape", - "autovaluegson.factory.shaded.com.google.common.eventbus", - "autovaluegson.factory.shaded.com.google.common.graph", - "autovaluegson.factory.shaded.com.google.common.hash", - "autovaluegson.factory.shaded.com.google.common.html", - "autovaluegson.factory.shaded.com.google.common.io", - "autovaluegson.factory.shaded.com.google.common.math", - "autovaluegson.factory.shaded.com.google.common.net", - "autovaluegson.factory.shaded.com.google.common.primitives", - "autovaluegson.factory.shaded.com.google.common.reflect", - "autovaluegson.factory.shaded.com.google.common.util.concurrent", - "autovaluegson.factory.shaded.com.google.common.xml", - "com.ryanharter.auto.value.gson.factory" - ], - "sha256": "5a76c3d401c984999d59868f08df05a15613d1428f7764fed80b722e2a277f6c", - "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar" - }, - { - "coord": "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1", - "dependencies": [ - "com.google.code.gson:gson:2.9.0", - "io.sweers.autotransient:autotransient:1.0.0" - ], - "directDependencies": [ - "com.google.code.gson:gson:2.9.0", - "io.sweers.autotransient:autotransient:1.0.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar" - ], - "packages": [ - "com.ryanharter.auto.value.gson", - "com.ryanharter.auto.value.gson.internal" - ], - "sha256": "84ee23b7989d4bf19930b5bd3d03c0f2efb9e73bcee3a0208a9d1b2e1979c049", - "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar" - }, - { - "coord": "com.squareup:javapoet:1.12.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar" - ], - "packages": [ - "com.squareup.javapoet" - ], - "sha256": "2b70cdfa8c9e997b4007035a266c273c0df341f9c57c9d0b45a680ae3fd882db", - "url": "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar" - }, - { - "coord": "commons-collections:commons-collections:3.2.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar" - ], - "packages": [ - "org.apache.commons.collections", - "org.apache.commons.collections.bag", - "org.apache.commons.collections.bidimap", - "org.apache.commons.collections.buffer", - "org.apache.commons.collections.collection", - "org.apache.commons.collections.comparators", - "org.apache.commons.collections.functors", - "org.apache.commons.collections.iterators", - "org.apache.commons.collections.keyvalue", - "org.apache.commons.collections.list", - "org.apache.commons.collections.map", - "org.apache.commons.collections.set" - ], - "sha256": "eeeae917917144a68a741d4c0dff66aa5c5c5fd85593ff217bced3fc8ca783b8", - "url": "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar" - }, - { - "coord": "commons-lang:commons-lang:2.6", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar" - ], - "packages": [ - "org.apache.commons.lang", - "org.apache.commons.lang.builder", - "org.apache.commons.lang.enum", - "org.apache.commons.lang.enums", - "org.apache.commons.lang.exception", - "org.apache.commons.lang.math", - "org.apache.commons.lang.mutable", - "org.apache.commons.lang.reflect", - "org.apache.commons.lang.text", - "org.apache.commons.lang.time" - ], - "sha256": "50f11b09f877c294d56f24463f47d28f929cf5044f648661c0f0cfbae9a2f49c", - "url": "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar" - }, - { - "coord": "io.github.java-diff-utils:java-diff-utils:4.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.0/java-diff-utils-4.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.0/java-diff-utils-4.0.jar" - ], - "packages": [ - "com.github.difflib", - "com.github.difflib.algorithm", - "com.github.difflib.algorithm.jgit", - "com.github.difflib.algorithm.myers", - "com.github.difflib.patch", - "com.github.difflib.text" - ], - "sha256": "810232374e76a954949f0e2185cd7d9515addb918cf3da3481f77e07c356b49a", - "url": "https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.0/java-diff-utils-4.0.jar" - }, - { - "coord": "io.grpc:grpc-api:1.48.1", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-context:1.48.1" - ], - "directDependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-context:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-api/1.48.1/grpc-api-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.48.1/grpc-api-1.48.1.jar" - ], - "packages": [ - "io.grpc" - ], - "sha256": "aeb8d7a1361aa3d8f5a191580fa7f8cbc5ceb53137a4a698590f612f791e2c45", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.48.1/grpc-api-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-auth:1.48.1", - "dependencies": [ - "com.google.auth:google-auth-library-credentials:1.6.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1" - ], - "directDependencies": [ - "com.google.auth:google-auth-library-credentials:1.6.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-auth/1.48.1/grpc-auth-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-auth/1.48.1/grpc-auth-1.48.1.jar" - ], - "packages": [ - "io.grpc.auth" - ], - "sha256": "ae63be5fe345ffdd5157284d90b783138eb31634e274182a8495242f9ad66a56", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-auth/1.48.1/grpc-auth-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-context:1.48.1", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-context/1.48.1/grpc-context-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.48.1/grpc-context-1.48.1.jar" - ], - "packages": [ - "io.grpc" - ], - "sha256": "2fb9007e12f768e9c968f9db292be4ea9cba2ef40fb8d179f3f8746ebdc73c1b", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.48.1/grpc-context-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-core:1.48.1", - "dependencies": [ - "com.google.android:annotations:4.1.1.4", - "com.google.code.gson:gson:2.9.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.perfmark:perfmark-api:0.25.0", - "org.codehaus.mojo:animal-sniffer-annotations:1.21" - ], - "directDependencies": [ - "com.google.android:annotations:4.1.1.4", - "com.google.code.gson:gson:2.9.0", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.perfmark:perfmark-api:0.25.0", - "org.codehaus.mojo:animal-sniffer-annotations:1.21" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-core/1.48.1/grpc-core-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.48.1/grpc-core-1.48.1.jar" - ], - "packages": [ - "io.grpc.inprocess", - "io.grpc.internal", - "io.grpc.util" - ], - "sha256": "6d472ee6d2b60ef3f3e6801e7cd4dbec5fbbef81e883a0de1fbc55e6defe1cb7", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.48.1/grpc-core-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-netty:1.48.1", - "dependencies": [ - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-core:1.48.1", - "io.netty:netty-codec-http2:4.1.87.Final", - "io.netty:netty-handler-proxy:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.perfmark:perfmark-api:0.25.0" - ], - "directDependencies": [ - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-core:1.48.1", - "io.netty:netty-codec-http2:4.1.87.Final", - "io.netty:netty-handler-proxy:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.perfmark:perfmark-api:0.25.0" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-netty/1.48.1/grpc-netty-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-netty/1.48.1/grpc-netty-1.48.1.jar" - ], - "packages": [ - "io.grpc.netty" - ], - "sha256": "2a51593342a2ee4f8f1b946dc48d06b02d0721493238e4ae83d1ad66f8b0c9f4", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-netty/1.48.1/grpc-netty-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-protobuf-lite:1.48.1", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.grpc:grpc-context:1.48.1" - ], - "directDependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.48.1/grpc-protobuf-lite-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.48.1/grpc-protobuf-lite-1.48.1.jar" - ], - "packages": [ - "io.grpc.protobuf.lite" - ], - "sha256": "0a4c735bb80e342d418c0ef7d2add7793aaf72b91c449bde2769ea81f1869737", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.48.1/grpc-protobuf-lite-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-protobuf:1.48.1", - "dependencies": [ - "com.google.api.grpc:proto-google-common-protos:2.9.0", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.grpc:grpc-context:1.48.1", - "io.grpc:grpc-protobuf-lite:1.48.1" - ], - "directDependencies": [ - "com.google.api.grpc:proto-google-common-protos:2.9.0", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.grpc:grpc-protobuf-lite:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-protobuf/1.48.1/grpc-protobuf-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf/1.48.1/grpc-protobuf-1.48.1.jar" - ], - "packages": [ - "io.grpc.protobuf" - ], - "sha256": "6ab68b0a3bb3834af44208df058be4631425b56ef95f9b9412aa21df3311e8d3", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf/1.48.1/grpc-protobuf-1.48.1.jar" - }, - { - "coord": "io.grpc:grpc-stub:1.48.1", - "dependencies": [ - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1", - "io.grpc:grpc-context:1.48.1" - ], - "directDependencies": [ - "com.google.errorprone:error_prone_annotations:2.18.0", - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-api:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-stub/1.48.1/grpc-stub-1.48.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.48.1/grpc-stub-1.48.1.jar" - ], - "packages": [ - "io.grpc.stub", - "io.grpc.stub.annotations" - ], - "sha256": "6436f19cef264fd949fb7a41e11424e373aa3b1096cad0b7e518f1c81aa60f23", - "url": "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.48.1/grpc-stub-1.48.1.jar" - }, - { - "coord": "io.netty:netty-buffer:4.1.87.Final", - "dependencies": [ - "io.netty:netty-common:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-common:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-buffer/4.1.87.Final/netty-buffer-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-buffer/4.1.87.Final/netty-buffer-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.buffer", - "io.netty.buffer.search" - ], - "sha256": "4e3abdf4ddb8810f5fb4a2b57c9144407873b359faa1894007673ed1465dd3e8", - "url": "https://repo1.maven.org/maven2/io/netty/netty-buffer/4.1.87.Final/netty-buffer-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-codec-dns:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-codec-dns/4.1.87.Final/netty-codec-dns-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-codec-dns/4.1.87.Final/netty-codec-dns-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.codec.dns" - ], - "sha256": "c19f96d217e91ddf76a122d4d542566239b64399a2b5f49533ca37acf63ef74f", - "url": "https://repo1.maven.org/maven2/io/netty/netty-codec-dns/4.1.87.Final/netty-codec-dns-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-codec-http2:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-http:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-http:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-codec-http2/4.1.87.Final/netty-codec-http2-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-codec-http2/4.1.87.Final/netty-codec-http2-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.codec.http2" - ], - "sha256": "e5d01b8db385b23103de67d3666c6fa9fa144d42217a3c8266b2a5efe425f093", - "url": "https://repo1.maven.org/maven2/io/netty/netty-codec-http2/4.1.87.Final/netty-codec-http2-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-codec-http:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-codec-http/4.1.87.Final/netty-codec-http-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-codec-http/4.1.87.Final/netty-codec-http-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.codec.http", - "io.netty.handler.codec.http.cookie", - "io.netty.handler.codec.http.cors", - "io.netty.handler.codec.http.multipart", - "io.netty.handler.codec.http.websocketx", - "io.netty.handler.codec.http.websocketx.extensions", - "io.netty.handler.codec.http.websocketx.extensions.compression", - "io.netty.handler.codec.rtsp", - "io.netty.handler.codec.spdy" - ], - "sha256": "39368c15595b791dbe26e7639cf2e71b6647bab8838fa5781cf7a80762eac927", - "url": "https://repo1.maven.org/maven2/io/netty/netty-codec-http/4.1.87.Final/netty-codec-http-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-codec-socks:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-codec-socks/4.1.87.Final/netty-codec-socks-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-codec-socks/4.1.87.Final/netty-codec-socks-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.codec.socks", - "io.netty.handler.codec.socksx", - "io.netty.handler.codec.socksx.v4", - "io.netty.handler.codec.socksx.v5" - ], - "sha256": "41a76a64514f8f8f50ab8527254073521394138e8a96191905e8c143368b2006", - "url": "https://repo1.maven.org/maven2/io/netty/netty-codec-socks/4.1.87.Final/netty-codec-socks-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-codec:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-codec/4.1.87.Final/netty-codec-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-codec/4.1.87.Final/netty-codec-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.codec", - "io.netty.handler.codec.base64", - "io.netty.handler.codec.bytes", - "io.netty.handler.codec.compression", - "io.netty.handler.codec.json", - "io.netty.handler.codec.marshalling", - "io.netty.handler.codec.protobuf", - "io.netty.handler.codec.serialization", - "io.netty.handler.codec.string", - "io.netty.handler.codec.xml" - ], - "sha256": "c643fe8318b7c7405acec13ed98e8f634f917960b20486295efbc5a690bac694", - "url": "https://repo1.maven.org/maven2/io/netty/netty-codec/4.1.87.Final/netty-codec-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-common:4.1.87.Final", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-common/4.1.87.Final/netty-common-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-common/4.1.87.Final/netty-common-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.util", - "io.netty.util.collection", - "io.netty.util.concurrent", - "io.netty.util.internal", - "io.netty.util.internal.logging", - "io.netty.util.internal.shaded.org.jctools.queues", - "io.netty.util.internal.shaded.org.jctools.queues.atomic", - "io.netty.util.internal.shaded.org.jctools.util", - "io.netty.util.internal.svm" - ], - "sha256": "811443fc1411a9ef7c1f7b02a750e2a6688f1eec0ae7361ed07812a85d982c86", - "url": "https://repo1.maven.org/maven2/io/netty/netty-common/4.1.87.Final/netty-common-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-handler-proxy:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-http:4.1.87.Final", - "io.netty:netty-codec-socks:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-http:4.1.87.Final", - "io.netty:netty-codec-socks:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-handler-proxy/4.1.87.Final/netty-handler-proxy-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-handler-proxy/4.1.87.Final/netty-handler-proxy-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.proxy" - ], - "sha256": "65276b2ab687b1b7c1ceabcc941d6e2cce1038f35b581218d7dbf46b16c5b4ac", - "url": "https://repo1.maven.org/maven2/io/netty/netty-handler-proxy/4.1.87.Final/netty-handler-proxy-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-handler:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-handler/4.1.87.Final/netty-handler-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-handler/4.1.87.Final/netty-handler-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.handler.address", - "io.netty.handler.flow", - "io.netty.handler.flush", - "io.netty.handler.ipfilter", - "io.netty.handler.logging", - "io.netty.handler.pcap", - "io.netty.handler.ssl", - "io.netty.handler.ssl.ocsp", - "io.netty.handler.ssl.util", - "io.netty.handler.stream", - "io.netty.handler.timeout", - "io.netty.handler.traffic" - ], - "sha256": "31a20e1de13b06a677a4719fd5aa95635982114a32c1d034739a48cceada2383", - "url": "https://repo1.maven.org/maven2/io/netty/netty-handler/4.1.87.Final/netty-handler-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-resolver-dns:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-dns:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec-dns:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-handler:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-resolver-dns/4.1.87.Final/netty-resolver-dns-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-resolver-dns/4.1.87.Final/netty-resolver-dns-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.resolver.dns" - ], - "sha256": "33eaaf06577eb2b56d69dd6c8b82ebb0439c2e3d30c2d46608c90c6748dc0608", - "url": "https://repo1.maven.org/maven2/io/netty/netty-resolver-dns/4.1.87.Final/netty-resolver-dns-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-resolver:4.1.87.Final", - "dependencies": [ - "io.netty:netty-common:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-common:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-resolver/4.1.87.Final/netty-resolver-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-resolver/4.1.87.Final/netty-resolver-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.resolver" - ], - "sha256": "ee11d22d240b4b125edaed23ec7cc35ad9241b1b8fdd50630de20411ec345fc7", - "url": "https://repo1.maven.org/maven2/io/netty/netty-resolver/4.1.87.Final/netty-resolver-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "dependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "directDependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-aarch_64.jar" - ], - "packages": [], - "sha256": "8e5a30fc4a9514714367813f8027df4c9672746797b0699d83958d678e5cfeca", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-aarch_64.jar" - }, - { - "coord": "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "dependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "directDependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-x86_64.jar" - ], - "packages": [], - "sha256": "725c26b4dd58a1aa782020952ad949bdb607235dd20ee49e5a5875c15456ca86", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-linux-x86_64.jar" - }, - { - "coord": "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "dependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "directDependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-aarch_64.jar" - ], - "packages": [], - "sha256": "3b962ce1361b479ec7375f04e5d149e7b374a99ecf4f583c9aa0f0a92e5fa415", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-aarch_64.jar" - }, - { - "coord": "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "dependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "directDependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-x86_64.jar" - ], - "packages": [], - "sha256": "9a77e8910af04becbdb535592c6a1e1a9accecde522aa1bb925a023c2c59d6dc", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-osx-x86_64.jar" - }, - { - "coord": "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "dependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "directDependencies": [ - "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final", - "io.netty:netty-tcnative-classes:2.0.56.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-windows-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-windows-x86_64.jar" - ], - "packages": [], - "sha256": "b0d9505b09427ab655369506a802358966762edcb7cf08fc162dc2b368a2041c", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/2.0.56.Final/netty-tcnative-boringssl-static-2.0.56.Final-windows-x86_64.jar" - }, - { - "coord": "io.netty:netty-tcnative-classes:2.0.56.Final", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-tcnative-classes/2.0.56.Final/netty-tcnative-classes-2.0.56.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-tcnative-classes/2.0.56.Final/netty-tcnative-classes-2.0.56.Final.jar" - ], - "packages": [ - "io.netty.internal.tcnative" - ], - "sha256": "eede807f0dd5eb1ad74ea1ae1094430631da63fcde00d4dc20eb0cd048bb0ac3", - "url": "https://repo1.maven.org/maven2/io/netty/netty-tcnative-classes/2.0.56.Final/netty-tcnative-classes-2.0.56.Final.jar" - }, - { - "coord": "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-classes-epoll/4.1.87.Final/netty-transport-classes-epoll-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-classes-epoll/4.1.87.Final/netty-transport-classes-epoll-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.channel.epoll" - ], - "sha256": "0b50ae7e1cb32f89c3a8b38a29605cfe6bd797693b3374fbf2577fbc03719297", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-classes-epoll/4.1.87.Final/netty-transport-classes-epoll-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.87.Final/netty-transport-classes-kqueue-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.87.Final/netty-transport-classes-kqueue-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.channel.kqueue" - ], - "sha256": "94abb9234691ce082bbc0d1d533e186cfd1a312d7515a47647896945e7fdbf87", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.87.Final/netty-transport-classes-kqueue-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-aarch_64.jar" - ], - "packages": [], - "sha256": "e83c645de0623d28d6fc72a5a2b6322b2758f01aee83fa5af73f353bebdf028e", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-aarch_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-classes-epoll:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-x86_64.jar" - ], - "packages": [], - "sha256": "bb3752881a027efa99388bef21f3287a6553299930f4226a6ea683da21c957f2", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.87.Final/netty-transport-native-epoll-4.1.87.Final-linux-x86_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-aarch_64.jar" - ], - "packages": [], - "sha256": "27e5bd891a4b8b70db2bf1a4c419fc666714a385d98194fbe3c856cac99610bd", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-aarch_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport-classes-kqueue:4.1.87.Final", - "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-x86_64.jar" - ], - "packages": [], - "sha256": "dba5794dabbbfa7d97f659b135a14f37544b20cf4438165f4b0ff65bbe525f51", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.87.Final/netty-transport-native-kqueue-4.1.87.Final-osx-x86_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-unix-common:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.channel.unix" - ], - "sha256": "cc2d013c933c206605da01be39f4c2c1f4586a1b9103a665bd724bdd46d9cd0c", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-aarch_64.jar" - ], - "packages": [ - "io.netty.channel.unix" - ], - "sha256": "41bbedd9e89a290970d4d3428c6d0d72808c58f3301331055518b028318aa442", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-aarch_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-x86_64.jar" - ], - "packages": [ - "io.netty.channel.unix" - ], - "sha256": "c64d927132dbe7c42d26eeabee37237900729b7e2eccf86376b285120978afba", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-linux-x86_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-aarch_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-aarch_64.jar" - ], - "packages": [ - "io.netty.channel.unix" - ], - "sha256": "4be35bfc0b950ff95d16359e5ac8ef6920f84247b13b2997ae0af607ba41e76c", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-aarch_64.jar" - }, - { - "coord": "io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-x86_64.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-x86_64.jar" - ], - "packages": [ - "io.netty.channel.unix" - ], - "sha256": "c57d14fd8c694325d887be1e396671f00fcd72e0471d14eb86c507bd2fabd247", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.87.Final/netty-transport-native-unix-common-4.1.87.Final-osx-x86_64.jar" - }, - { - "coord": "io.netty:netty-transport-sctp:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-codec:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-transport:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport-sctp/4.1.87.Final/netty-transport-sctp-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport-sctp/4.1.87.Final/netty-transport-sctp-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.channel.sctp", - "io.netty.channel.sctp.nio", - "io.netty.channel.sctp.oio", - "io.netty.handler.codec.sctp" - ], - "sha256": "600bc9b708885dd8807b09afaae0a848c4192bace1fc91802066bf6a2e643005", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport-sctp/4.1.87.Final/netty-transport-sctp-4.1.87.Final.jar" - }, - { - "coord": "io.netty:netty-transport:4.1.87.Final", - "dependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final" - ], - "directDependencies": [ - "io.netty:netty-buffer:4.1.87.Final", - "io.netty:netty-common:4.1.87.Final", - "io.netty:netty-resolver:4.1.87.Final" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/netty/netty-transport/4.1.87.Final/netty-transport-4.1.87.Final.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/netty/netty-transport/4.1.87.Final/netty-transport-4.1.87.Final.jar" - ], - "packages": [ - "io.netty.bootstrap", - "io.netty.channel", - "io.netty.channel.embedded", - "io.netty.channel.group", - "io.netty.channel.internal", - "io.netty.channel.local", - "io.netty.channel.nio", - "io.netty.channel.oio", - "io.netty.channel.pool", - "io.netty.channel.socket", - "io.netty.channel.socket.nio", - "io.netty.channel.socket.oio" - ], - "sha256": "17ed465cf5b1579b72379e47be3ba7fccb09dda8d95d47c8d668118483b08f43", - "url": "https://repo1.maven.org/maven2/io/netty/netty-transport/4.1.87.Final/netty-transport-4.1.87.Final.jar" - }, - { - "coord": "io.opencensus:opencensus-api:0.31.1", - "dependencies": [ - "io.grpc:grpc-context:1.48.1" - ], - "directDependencies": [ - "io.grpc:grpc-context:1.48.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar" - ], - "packages": [ - "io.opencensus.common", - "io.opencensus.internal", - "io.opencensus.metrics", - "io.opencensus.metrics.data", - "io.opencensus.metrics.export", - "io.opencensus.resource", - "io.opencensus.stats", - "io.opencensus.tags", - "io.opencensus.tags.propagation", - "io.opencensus.tags.unsafe", - "io.opencensus.trace", - "io.opencensus.trace.config", - "io.opencensus.trace.export", - "io.opencensus.trace.internal", - "io.opencensus.trace.propagation", - "io.opencensus.trace.samplers", - "io.opencensus.trace.unsafe" - ], - "sha256": "f1474d47f4b6b001558ad27b952e35eda5cc7146788877fc52938c6eba24b382", - "url": "https://repo1.maven.org/maven2/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar" - }, - { - "coord": "io.opencensus:opencensus-contrib-http-util:0.31.1", - "dependencies": [ - "com.google.guava:guava:31.1-jre", - "io.grpc:grpc-context:1.48.1", - "io.opencensus:opencensus-api:0.31.1" - ], - "directDependencies": [ - "com.google.guava:guava:31.1-jre", - "io.opencensus:opencensus-api:0.31.1" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/opencensus/opencensus-contrib-http-util/0.31.1/opencensus-contrib-http-util-0.31.1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/opencensus/opencensus-contrib-http-util/0.31.1/opencensus-contrib-http-util-0.31.1.jar" - ], - "packages": [ - "io.opencensus.contrib.http", - "io.opencensus.contrib.http.util" - ], - "sha256": "3ea995b55a4068be22989b70cc29a4d788c2d328d1d50613a7a9afd13fdd2d0a", - "url": "https://repo1.maven.org/maven2/io/opencensus/opencensus-contrib-http-util/0.31.1/opencensus-contrib-http-util-0.31.1.jar" - }, - { - "coord": "io.perfmark:perfmark-api:0.25.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/perfmark/perfmark-api/0.25.0/perfmark-api-0.25.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.25.0/perfmark-api-0.25.0.jar" - ], - "packages": [ - "io.perfmark" - ], - "sha256": "2044542933fcdf40ad18441bec37646d150c491871157f288847e29cb81de4cb", - "url": "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.25.0/perfmark-api-0.25.0.jar" - }, - { - "coord": "io.reactivex.rxjava3:rxjava:3.1.2", - "dependencies": [ - "org.reactivestreams:reactive-streams:1.0.3" - ], - "directDependencies": [ - "org.reactivestreams:reactive-streams:1.0.3" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/reactivex/rxjava3/rxjava/3.1.2/rxjava-3.1.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/reactivex/rxjava3/rxjava/3.1.2/rxjava-3.1.2.jar" - ], - "packages": [ - "io.reactivex.rxjava3.annotations", - "io.reactivex.rxjava3.core", - "io.reactivex.rxjava3.disposables", - "io.reactivex.rxjava3.exceptions", - "io.reactivex.rxjava3.flowables", - "io.reactivex.rxjava3.functions", - "io.reactivex.rxjava3.internal.disposables", - "io.reactivex.rxjava3.internal.functions", - "io.reactivex.rxjava3.internal.fuseable", - "io.reactivex.rxjava3.internal.jdk8", - "io.reactivex.rxjava3.internal.observers", - "io.reactivex.rxjava3.internal.operators.completable", - "io.reactivex.rxjava3.internal.operators.flowable", - "io.reactivex.rxjava3.internal.operators.maybe", - "io.reactivex.rxjava3.internal.operators.mixed", - "io.reactivex.rxjava3.internal.operators.observable", - "io.reactivex.rxjava3.internal.operators.parallel", - "io.reactivex.rxjava3.internal.operators.single", - "io.reactivex.rxjava3.internal.queue", - "io.reactivex.rxjava3.internal.schedulers", - "io.reactivex.rxjava3.internal.subscribers", - "io.reactivex.rxjava3.internal.subscriptions", - "io.reactivex.rxjava3.internal.util", - "io.reactivex.rxjava3.observables", - "io.reactivex.rxjava3.observers", - "io.reactivex.rxjava3.operators", - "io.reactivex.rxjava3.parallel", - "io.reactivex.rxjava3.plugins", - "io.reactivex.rxjava3.processors", - "io.reactivex.rxjava3.schedulers", - "io.reactivex.rxjava3.subjects", - "io.reactivex.rxjava3.subscribers" - ], - "sha256": "8d784075bec0b7c55042c109a4de8923b3b6d2ebd2e00912d518f07240f9c23a", - "url": "https://repo1.maven.org/maven2/io/reactivex/rxjava3/rxjava/3.1.2/rxjava-3.1.2.jar" - }, - { - "coord": "io.sweers.autotransient:autotransient:1.0.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar" - ], - "packages": [ - "io.sweers.autotransient" - ], - "sha256": "914ce84508410ee1419514925f93b1855a9f7a7b5b5d02fc07f411d2a45f1bba", - "url": "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar" - }, - { - "coord": "javax.activation:javax.activation-api:1.2.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar" - ], - "packages": [ - "javax.activation" - ], - "sha256": "43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393", - "url": "https://repo1.maven.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar" - }, - { - "coord": "javax.annotation:javax.annotation-api:1.3.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" - ], - "packages": [ - "javax.annotation", - "javax.annotation.security", - "javax.annotation.sql" - ], - "sha256": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b", - "url": "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" - }, - { - "coord": "javax.inject:javax.inject:1", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar" - ], - "packages": [ - "javax.inject" - ], - "sha256": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff", - "url": "https://repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar" - }, - { - "coord": "junit:junit:4.13.2", - "dependencies": [ - "org.hamcrest:hamcrest-core:1.3" - ], - "directDependencies": [ - "org.hamcrest:hamcrest-core:1.3" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar" - ], - "packages": [ - "junit.extensions", - "junit.framework", - "junit.runner", - "junit.textui", - "org.junit", - "org.junit.experimental", - "org.junit.experimental.categories", - "org.junit.experimental.max", - "org.junit.experimental.results", - "org.junit.experimental.runners", - "org.junit.experimental.theories", - "org.junit.experimental.theories.internal", - "org.junit.experimental.theories.suppliers", - "org.junit.function", - "org.junit.internal", - "org.junit.internal.builders", - "org.junit.internal.management", - "org.junit.internal.matchers", - "org.junit.internal.requests", - "org.junit.internal.runners", - "org.junit.internal.runners.model", - "org.junit.internal.runners.rules", - "org.junit.internal.runners.statements", - "org.junit.matchers", - "org.junit.rules", - "org.junit.runner", - "org.junit.runner.manipulation", - "org.junit.runner.notification", - "org.junit.runners", - "org.junit.runners.model", - "org.junit.runners.parameterized", - "org.junit.validator" - ], - "sha256": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3", - "url": "https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar" - }, - { - "coord": "net.bytebuddy:byte-buddy-agent:1.11.13", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.13/byte-buddy-agent-1.11.13.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.13/byte-buddy-agent-1.11.13.jar" - ], - "packages": [ - "net.bytebuddy.agent" - ], - "sha256": "49b43b0d10f8bb1d800d56137bdf0f44628412ebe1fbd804e45f363d495860fa", - "url": "https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.13/byte-buddy-agent-1.11.13.jar" - }, - { - "coord": "net.bytebuddy:byte-buddy:1.11.13", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.jar" - ], - "packages": [ - "net.bytebuddy", - "net.bytebuddy.agent.builder", - "net.bytebuddy.asm", - "net.bytebuddy.build", - "net.bytebuddy.description", - "net.bytebuddy.description.annotation", - "net.bytebuddy.description.enumeration", - "net.bytebuddy.description.field", - "net.bytebuddy.description.method", - "net.bytebuddy.description.modifier", - "net.bytebuddy.description.type", - "net.bytebuddy.dynamic", - "net.bytebuddy.dynamic.loading", - "net.bytebuddy.dynamic.scaffold", - "net.bytebuddy.dynamic.scaffold.inline", - "net.bytebuddy.dynamic.scaffold.subclass", - "net.bytebuddy.implementation", - "net.bytebuddy.implementation.attribute", - "net.bytebuddy.implementation.auxiliary", - "net.bytebuddy.implementation.bind", - "net.bytebuddy.implementation.bind.annotation", - "net.bytebuddy.implementation.bytecode", - "net.bytebuddy.implementation.bytecode.assign", - "net.bytebuddy.implementation.bytecode.assign.primitive", - "net.bytebuddy.implementation.bytecode.assign.reference", - "net.bytebuddy.implementation.bytecode.collection", - "net.bytebuddy.implementation.bytecode.constant", - "net.bytebuddy.implementation.bytecode.member", - "net.bytebuddy.jar.asm", - "net.bytebuddy.jar.asm.commons", - "net.bytebuddy.jar.asm.signature", - "net.bytebuddy.matcher", - "net.bytebuddy.pool", - "net.bytebuddy.utility", - "net.bytebuddy.utility.dispatcher", - "net.bytebuddy.utility.privilege", - "net.bytebuddy.utility.visitor" - ], - "sha256": "e29fa75b903432ac64d05c18c19d0e3b9026e74abda52bbd6f9065e55f4a29f5", - "url": "https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.jar" - }, - { - "coord": "org.apache.commons:commons-compress:1.19", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.19/commons-compress-1.19.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.19/commons-compress-1.19.jar" - ], - "packages": [ - "org.apache.commons.compress", - "org.apache.commons.compress.archivers", - "org.apache.commons.compress.archivers.ar", - "org.apache.commons.compress.archivers.arj", - "org.apache.commons.compress.archivers.cpio", - "org.apache.commons.compress.archivers.dump", - "org.apache.commons.compress.archivers.examples", - "org.apache.commons.compress.archivers.jar", - "org.apache.commons.compress.archivers.sevenz", - "org.apache.commons.compress.archivers.tar", - "org.apache.commons.compress.archivers.zip", - "org.apache.commons.compress.changes", - "org.apache.commons.compress.compressors", - "org.apache.commons.compress.compressors.brotli", - "org.apache.commons.compress.compressors.bzip2", - "org.apache.commons.compress.compressors.deflate", - "org.apache.commons.compress.compressors.deflate64", - "org.apache.commons.compress.compressors.gzip", - "org.apache.commons.compress.compressors.lz4", - "org.apache.commons.compress.compressors.lz77support", - "org.apache.commons.compress.compressors.lzma", - "org.apache.commons.compress.compressors.lzw", - "org.apache.commons.compress.compressors.pack200", - "org.apache.commons.compress.compressors.snappy", - "org.apache.commons.compress.compressors.xz", - "org.apache.commons.compress.compressors.z", - "org.apache.commons.compress.compressors.zstandard", - "org.apache.commons.compress.parallel", - "org.apache.commons.compress.utils" - ], - "sha256": "ff2d59fad74e867630fbc7daab14c432654712ac624dbee468d220677b124dd5", - "url": "https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.19/commons-compress-1.19.jar" - }, - { - "coord": "org.apache.commons:commons-pool2:2.8.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.8.0/commons-pool2-2.8.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.8.0/commons-pool2-2.8.0.jar" - ], - "packages": [ - "org.apache.commons.pool2", - "org.apache.commons.pool2.impl", - "org.apache.commons.pool2.proxy" - ], - "sha256": "5efa9fbb54a58b1a12205a5fac565f6982abfeb0ff45bdbc318748ef5fd3a3ff", - "url": "https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.8.0/commons-pool2-2.8.0.jar" - }, - { - "coord": "org.apache.tomcat:tomcat-annotations-api:8.0.5", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar" - ], - "packages": [ - "javax.annotation", - "javax.annotation.security", - "javax.annotation.sql", - "javax.ejb", - "javax.persistence", - "javax.xml.ws" - ], - "sha256": "748677bebb1651a313317dfd93e984ed8f8c9e345538fa8b0ab0cbb804631953", - "url": "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar" - }, - { - "coord": "org.apache.velocity:velocity:1.7", - "dependencies": [ - "commons-collections:commons-collections:3.2.2", - "commons-lang:commons-lang:2.6" - ], - "directDependencies": [ - "commons-collections:commons-collections:3.2.2", - "commons-lang:commons-lang:2.6" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar" - ], - "packages": [ - "org.apache.velocity", - "org.apache.velocity.anakia", - "org.apache.velocity.app", - "org.apache.velocity.app.event", - "org.apache.velocity.app.event.implement", - "org.apache.velocity.app.tools", - "org.apache.velocity.context", - "org.apache.velocity.convert", - "org.apache.velocity.exception", - "org.apache.velocity.io", - "org.apache.velocity.runtime", - "org.apache.velocity.runtime.directive", - "org.apache.velocity.runtime.log", - "org.apache.velocity.runtime.parser", - "org.apache.velocity.runtime.parser.node", - "org.apache.velocity.runtime.resource", - "org.apache.velocity.runtime.resource.loader", - "org.apache.velocity.runtime.resource.util", - "org.apache.velocity.runtime.visitor", - "org.apache.velocity.servlet", - "org.apache.velocity.texen", - "org.apache.velocity.texen.ant", - "org.apache.velocity.texen.util", - "org.apache.velocity.util", - "org.apache.velocity.util.introspection" - ], - "sha256": "ec92dae810034f4b46dbb16ef4364a4013b0efb24a8c5dd67435cae46a290d8e", - "url": "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar" - }, - { - "coord": "org.checkerframework:checker-compat-qual:2.5.3", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" - ], - "packages": [ - "org.checkerframework.checker.nullness.compatqual" - ], - "sha256": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d", - "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" - }, - { - "coord": "org.checkerframework:checker-qual:3.19.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar" - ], - "packages": [ - "org.checkerframework.checker.builder.qual", - "org.checkerframework.checker.calledmethods.qual", - "org.checkerframework.checker.compilermsgs.qual", - "org.checkerframework.checker.fenum.qual", - "org.checkerframework.checker.formatter.qual", - "org.checkerframework.checker.guieffect.qual", - "org.checkerframework.checker.i18n.qual", - "org.checkerframework.checker.i18nformatter.qual", - "org.checkerframework.checker.index.qual", - "org.checkerframework.checker.initialization.qual", - "org.checkerframework.checker.interning.qual", - "org.checkerframework.checker.lock.qual", - "org.checkerframework.checker.mustcall.qual", - "org.checkerframework.checker.nullness.qual", - "org.checkerframework.checker.optional.qual", - "org.checkerframework.checker.propkey.qual", - "org.checkerframework.checker.regex.qual", - "org.checkerframework.checker.signature.qual", - "org.checkerframework.checker.signedness.qual", - "org.checkerframework.checker.tainting.qual", - "org.checkerframework.checker.units.qual", - "org.checkerframework.common.aliasing.qual", - "org.checkerframework.common.initializedfields.qual", - "org.checkerframework.common.reflection.qual", - "org.checkerframework.common.returnsreceiver.qual", - "org.checkerframework.common.subtyping.qual", - "org.checkerframework.common.util.report.qual", - "org.checkerframework.common.value.qual", - "org.checkerframework.dataflow.qual", - "org.checkerframework.framework.qual" - ], - "sha256": "a827c49183f3a632277d27a0a4673686cb341507447b9d570261094bd748aa68", - "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar" - }, - { - "coord": "org.checkerframework:dataflow-errorprone:3.27.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/dataflow-errorprone/3.27.0/dataflow-errorprone-3.27.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/checkerframework/dataflow-errorprone/3.27.0/dataflow-errorprone-3.27.0.jar" - ], - "packages": [ - "org.checkerframework.dataflow.qual", - "org.checkerframework.errorprone.checker.builder.qual", - "org.checkerframework.errorprone.checker.calledmethods.qual", - "org.checkerframework.errorprone.checker.compilermsgs.qual", - "org.checkerframework.errorprone.checker.fenum.qual", - "org.checkerframework.errorprone.checker.formatter.qual", - "org.checkerframework.errorprone.checker.guieffect.qual", - "org.checkerframework.errorprone.checker.i18n.qual", - "org.checkerframework.errorprone.checker.i18nformatter.qual", - "org.checkerframework.errorprone.checker.index.qual", - "org.checkerframework.errorprone.checker.initialization.qual", - "org.checkerframework.errorprone.checker.interning.qual", - "org.checkerframework.errorprone.checker.lock.qual", - "org.checkerframework.errorprone.checker.mustcall.qual", - "org.checkerframework.errorprone.checker.nullness.qual", - "org.checkerframework.errorprone.checker.optional.qual", - "org.checkerframework.errorprone.checker.propkey.qual", - "org.checkerframework.errorprone.checker.regex.qual", - "org.checkerframework.errorprone.checker.signature.qual", - "org.checkerframework.errorprone.checker.signedness.qual", - "org.checkerframework.errorprone.checker.tainting.qual", - "org.checkerframework.errorprone.checker.units.qual", - "org.checkerframework.errorprone.common.aliasing.qual", - "org.checkerframework.errorprone.common.initializedfields.qual", - "org.checkerframework.errorprone.common.reflection.qual", - "org.checkerframework.errorprone.common.returnsreceiver.qual", - "org.checkerframework.errorprone.common.subtyping.qual", - "org.checkerframework.errorprone.common.util.report.qual", - "org.checkerframework.errorprone.common.value.qual", - "org.checkerframework.errorprone.dataflow.analysis", - "org.checkerframework.errorprone.dataflow.cfg", - "org.checkerframework.errorprone.dataflow.cfg.block", - "org.checkerframework.errorprone.dataflow.cfg.builder", - "org.checkerframework.errorprone.dataflow.cfg.node", - "org.checkerframework.errorprone.dataflow.cfg.playground", - "org.checkerframework.errorprone.dataflow.cfg.visualize", - "org.checkerframework.errorprone.dataflow.constantpropagation", - "org.checkerframework.errorprone.dataflow.expression", - "org.checkerframework.errorprone.dataflow.livevariable", - "org.checkerframework.errorprone.dataflow.util", - "org.checkerframework.errorprone.framework.qual", - "org.checkerframework.errorprone.framework.util", - "org.checkerframework.errorprone.javacutil", - "org.checkerframework.errorprone.javacutil.trees", - "org.checkerframework.errorprone.org.plumelib.reflection", - "org.checkerframework.errorprone.org.plumelib.util" - ], - "sha256": "fd40ebe6d514e56f8d8fac1b1a2afb1654b2053b571ddce1098b910f0bb395bd", - "url": "https://repo1.maven.org/maven2/org/checkerframework/dataflow-errorprone/3.27.0/dataflow-errorprone-3.27.0.jar" - }, - { - "coord": "org.codehaus.mojo:animal-sniffer-annotations:1.21", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.jar" - ], - "packages": [ - "org.codehaus.mojo.animal_sniffer" - ], - "sha256": "2f25841c937e24959a57b630e2c4b8525b3d0f536f2e511c9b2bed30b1651d54", - "url": "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.jar" - }, - { - "coord": "org.hamcrest:hamcrest-core:1.3", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - ], - "packages": [ - "org.hamcrest", - "org.hamcrest.core", - "org.hamcrest.internal" - ], - "sha256": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9", - "url": "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" - }, - { - "coord": "org.mockito:mockito-core:3.12.4", - "dependencies": [ - "net.bytebuddy:byte-buddy-agent:1.11.13", - "net.bytebuddy:byte-buddy:1.11.13", - "org.objenesis:objenesis:3.2" - ], - "directDependencies": [ - "net.bytebuddy:byte-buddy-agent:1.11.13", - "net.bytebuddy:byte-buddy:1.11.13", - "org.objenesis:objenesis:3.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.jar" - ], - "packages": [ - "org.mockito", - "org.mockito.codegen", - "org.mockito.configuration", - "org.mockito.creation.instance", - "org.mockito.exceptions.base", - "org.mockito.exceptions.misusing", - "org.mockito.exceptions.stacktrace", - "org.mockito.exceptions.verification", - "org.mockito.exceptions.verification.junit", - "org.mockito.exceptions.verification.opentest4j", - "org.mockito.hamcrest", - "org.mockito.internal", - "org.mockito.internal.configuration", - "org.mockito.internal.configuration.injection", - "org.mockito.internal.configuration.injection.filter", - "org.mockito.internal.configuration.injection.scanner", - "org.mockito.internal.configuration.plugins", - "org.mockito.internal.creation", - "org.mockito.internal.creation.bytebuddy", - "org.mockito.internal.creation.instance", - "org.mockito.internal.creation.proxy", - "org.mockito.internal.creation.settings", - "org.mockito.internal.creation.util", - "org.mockito.internal.debugging", - "org.mockito.internal.exceptions", - "org.mockito.internal.exceptions.stacktrace", - "org.mockito.internal.exceptions.util", - "org.mockito.internal.framework", - "org.mockito.internal.hamcrest", - "org.mockito.internal.handler", - "org.mockito.internal.invocation", - "org.mockito.internal.invocation.finder", - "org.mockito.internal.invocation.mockref", - "org.mockito.internal.junit", - "org.mockito.internal.junit.util", - "org.mockito.internal.listeners", - "org.mockito.internal.matchers", - "org.mockito.internal.matchers.apachecommons", - "org.mockito.internal.matchers.text", - "org.mockito.internal.progress", - "org.mockito.internal.reporting", - "org.mockito.internal.runners", - "org.mockito.internal.runners.util", - "org.mockito.internal.session", - "org.mockito.internal.stubbing", - "org.mockito.internal.stubbing.answers", - "org.mockito.internal.stubbing.defaultanswers", - "org.mockito.internal.util", - "org.mockito.internal.util.collections", - "org.mockito.internal.util.concurrent", - "org.mockito.internal.util.io", - "org.mockito.internal.util.reflection", - "org.mockito.internal.verification", - "org.mockito.internal.verification.api", - "org.mockito.internal.verification.argumentmatching", - "org.mockito.internal.verification.checkers", - "org.mockito.invocation", - "org.mockito.junit", - "org.mockito.listeners", - "org.mockito.mock", - "org.mockito.plugins", - "org.mockito.quality", - "org.mockito.runners", - "org.mockito.session", - "org.mockito.stubbing", - "org.mockito.verification" - ], - "sha256": "75d4b14ba7aef836e92ba7b2d53ca7d6b215dd7db5625afbc39252f1358835fe", - "url": "https://repo1.maven.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.jar" - }, - { - "coord": "org.objenesis:objenesis:3.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.jar" - ], - "packages": [ - "org.objenesis", - "org.objenesis.instantiator", - "org.objenesis.instantiator.android", - "org.objenesis.instantiator.annotations", - "org.objenesis.instantiator.basic", - "org.objenesis.instantiator.gcj", - "org.objenesis.instantiator.perc", - "org.objenesis.instantiator.sun", - "org.objenesis.instantiator.util", - "org.objenesis.strategy" - ], - "sha256": "03d960bd5aef03c653eb000413ada15eb77cdd2b8e4448886edf5692805e35f3", - "url": "https://repo1.maven.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.jar" - }, - { - "coord": "org.ow2.asm:asm-analysis:9.2", - "dependencies": [ - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "org.ow2.asm:asm-tree:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar" - ], - "packages": [ - "org.objectweb.asm.tree.analysis" - ], - "sha256": "878fbe521731c072d14d2d65b983b1beae6ad06fda0007b6a8bae81f73f433c4", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar" - }, - { - "coord": "org.ow2.asm:asm-commons:9.2", - "dependencies": [ - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar" - ], - "packages": [ - "org.objectweb.asm.commons" - ], - "sha256": "be4ce53138a238bb522cd781cf91f3ba5ce2f6ca93ec62d46a162a127225e0a6", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar" - }, - { - "coord": "org.ow2.asm:asm-tree:9.2", - "dependencies": [ - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "org.ow2.asm:asm:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar" - ], - "packages": [ - "org.objectweb.asm.tree" - ], - "sha256": "aabf9bd23091a4ebfc109c1f3ee7cf3e4b89f6ba2d3f51c5243f16b3cffae011", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar" - }, - { - "coord": "org.ow2.asm:asm-util:9.2", - "dependencies": [ - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm:9.2" - ], - "directDependencies": [ - "org.ow2.asm:asm-analysis:9.2", - "org.ow2.asm:asm-tree:9.2", - "org.ow2.asm:asm:9.2" - ], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar" - ], - "packages": [ - "org.objectweb.asm.util" - ], - "sha256": "ff5b3cd331ae8a9a804768280da98f50f424fef23dd3c788bb320e08c94ee598", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar" - }, - { - "coord": "org.ow2.asm:asm:9.2", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar" - ], - "packages": [ - "org.objectweb.asm", - "org.objectweb.asm.signature" - ], - "sha256": "b9d4fe4d71938df38839f0eca42aaaa64cf8b313d678da036f0cb3ca199b47f5", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar" - }, - { - "coord": "org.pcollections:pcollections:3.1.4", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/pcollections/pcollections/3.1.4/pcollections-3.1.4.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/pcollections/pcollections/3.1.4/pcollections-3.1.4.jar" - ], - "packages": [ - "org.pcollections" - ], - "sha256": "34f579ba075c8da2c8a0fedd0f04e21eac2fb6c660d90d0fabb573e8b4dc6918", - "url": "https://repo1.maven.org/maven2/org/pcollections/pcollections/3.1.4/pcollections-3.1.4.jar" - }, - { - "coord": "org.reactivestreams:reactive-streams:1.0.3", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar" - ], - "packages": [ - "org.reactivestreams" - ], - "sha256": "1dee0481072d19c929b623e155e14d2f6085dc011529a0a0dbefc84cf571d865", - "url": "https://repo1.maven.org/maven2/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar" - }, - { - "coord": "org.threeten:threeten-extra:1.5.0", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/threeten/threeten-extra/1.5.0/threeten-extra-1.5.0.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/threeten/threeten-extra/1.5.0/threeten-extra-1.5.0.jar" - ], - "packages": [ - "org.threeten.extra", - "org.threeten.extra.chrono", - "org.threeten.extra.scale" - ], - "sha256": "e7def554536188fbaf8aac1a0a2f956b039cbbb5696edc3b8336c442c56ae445", - "url": "https://repo1.maven.org/maven2/org/threeten/threeten-extra/1.5.0/threeten-extra-1.5.0.jar" - }, - { - "coord": "org.tukaani:xz:1.9", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar" - ], - "packages": [ - "org.tukaani.xz", - "org.tukaani.xz.check", - "org.tukaani.xz.common", - "org.tukaani.xz.delta", - "org.tukaani.xz.index", - "org.tukaani.xz.lz", - "org.tukaani.xz.lzma", - "org.tukaani.xz.rangecoder", - "org.tukaani.xz.simple" - ], - "sha256": "211b306cfc44f8f96df3a0a3ddaf75ba8c5289eed77d60d72f889bb855f535e5", - "url": "https://repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar" - }, - { - "coord": "tools.profiler:async-profiler:2.9", - "dependencies": [], - "directDependencies": [], - "exclusions": [ - "com.google.protobuf:protobuf-javalite", - "org.apache.httpcomponents:httpcore", - "com.google.protobuf:protobuf-java", - "org.eclipse.jgit:org.eclipse.jgit", - "org.apache.httpcomponents:httpclient" - ], - "file": "v1/https/repo1.maven.org/maven2/tools/profiler/async-profiler/2.9/async-profiler-2.9.jar", - "mirror_urls": [ - "https://repo1.maven.org/maven2/tools/profiler/async-profiler/2.9/async-profiler-2.9.jar" - ], - "packages": [ - "one.profiler" - ], - "sha256": "6c4e993c28cf2882964cac82a0f96e81a325840043884526565017b2f62c5ba4", - "url": "https://repo1.maven.org/maven2/tools/profiler/async-profiler/2.9/async-profiler-2.9.jar" - } - ], - "version": "0.1.0" + "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", + "__INPUT_ARTIFACTS_HASH": 307745718, + "__RESOLVED_ARTIFACTS_HASH": -1204291120, + "artifacts": { + "aopalliance:aopalliance": { + "shasums": { + "jar": "0addec670fedcd3f113c5c8091d783280d23f75e3acb841b61a9cdb079376a08" + }, + "version": "1.0" + }, + "com.beust:jcommander": { + "shasums": { + "jar": "deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1" + }, + "version": "1.82" + }, + "com.github.ben-manes.caffeine:caffeine": { + "shasums": { + "jar": "8a9b54d3506a3b92ee46b217bcee79196b21ca6d52dc2967c686a205fb2f9c15" + }, + "version": "3.0.5" + }, + "com.github.kevinstern:software-and-algorithms": { + "shasums": { + "jar": "61ab82439cef37343b14f53154c461619375373a56b9338e895709fb54e0864c" + }, + "version": "1.0" + }, + "com.github.stephenc.jcip:jcip-annotations": { + "shasums": { + "jar": "4fccff8382aafc589962c4edb262f6aa595e34f1e11e61057d1c6a96e8fc7323" + }, + "version": "1.0-1" + }, + "com.google.android:annotations": { + "shasums": { + "jar": "ba734e1e84c09d615af6a09d33034b4f0442f8772dec120efb376d86a565ae15" + }, + "version": "4.1.1.4" + }, + "com.google.api-client:google-api-client": { + "shasums": { + "jar": "f195cd6228d3f99fa7e30ff2dee60ad0f2c7923be31399a7dcdc1abd679aa22e" + }, + "version": "1.35.2" + }, + "com.google.api-client:google-api-client-gson": { + "shasums": { + "jar": "54e5be675e5c2ab0958647fcaa35c14bd8f7c08358c634f5ab786e4ed7268576" + }, + "version": "1.35.2" + }, + "com.google.api.grpc:proto-google-common-protos": { + "shasums": { + "jar": "0d830380ec66bd7e25eee63aa0a5a08578e46ad187fb72d99b44d9ba22827f91" + }, + "version": "2.9.0" + }, + "com.google.auth:google-auth-library-credentials": { + "shasums": { + "jar": "153fa3cdc153ac3ee25649e8037aeda4438256153d35acf3c27e83e4ee6165a4" + }, + "version": "1.6.0" + }, + "com.google.auth:google-auth-library-oauth2-http": { + "shasums": { + "jar": "2220f02fcfc480e3798bab43b2618d158319f9fcb357c9eb04b4a68117699808" + }, + "version": "1.6.0" + }, + "com.google.auto.service:auto-service": { + "shasums": { + "jar": "4ae44dd05b49a1109a463c0d2aaf920c24f76d1e996bb89f29481c4ff75ec526" + }, + "version": "1.0" + }, + "com.google.auto.service:auto-service-annotations": { + "shasums": { + "jar": "c7bec54b7b5588b5967e870341091c5691181d954cf2039f1bf0a6eeb837473b" + }, + "version": "1.0.1" + }, + "com.google.auto.value:auto-value": { + "shasums": { + "jar": "2067b788d4c1c96fd621ad861053a5c4d8a801cfafc77fec20d49a6e9340a745" + }, + "version": "1.8.2" + }, + "com.google.auto.value:auto-value-annotations": { + "shasums": { + "jar": "fa5469f4c44ee598a2d8f033ab0a9dcbc6498a0c5e0c998dfa0c2adf51358044" + }, + "version": "1.9" + }, + "com.google.auto:auto-common": { + "shasums": { + "jar": "f43f29fe2a6ebaf04b2598cdeec32a4e346d49a9404e990f5fc19c19f3a28d0e" + }, + "version": "1.2.1" + }, + "com.google.code.findbugs:jsr305": { + "shasums": { + "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7" + }, + "version": "3.0.2" + }, + "com.google.code.gson:gson": { + "shasums": { + "jar": "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d" + }, + "version": "2.9.0" + }, + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": { + "shasums": { + "jar": "1ef5535a8bd41cf3072469f381b9ee6ab28275311a7499f53d6e52adf976fef0" + }, + "version": "3.3.0" + }, + "com.google.errorprone:error_prone_annotation": { + "shasums": { + "jar": "a2796ac0de6c258150fb9d72d60978315793e8a4d5608bb25095d28eff9a4d05" + }, + "version": "2.19.0" + }, + "com.google.errorprone:error_prone_annotations": { + "shasums": { + "jar": "cb5c52ba0ec46466885b99d74d012fc4e6e871a615f77d0410648f8556e0a8eb" + }, + "version": "2.19.0" + }, + "com.google.errorprone:error_prone_check_api": { + "shasums": { + "jar": "9b5a0a74e8fabb283e13b38a7641c5f18e8659bedafdc8e45a114089c44b4acf" + }, + "version": "2.19.0" + }, + "com.google.errorprone:error_prone_core": { + "shasums": { + "jar": "c42acbe124b47cd5483a654e27710b4c960a82609df325911cf4c55341f817e2" + }, + "version": "2.19.0" + }, + "com.google.errorprone:error_prone_type_annotations": { + "shasums": { + "jar": "960641b9f7bc3142a5b18b9e35ba90e935b11ea45fdc4469962f47bc8dc66d8b" + }, + "version": "2.19.0" + }, + "com.google.flogger:flogger": { + "shasums": { + "jar": "b5ecd1483e041197012786f749968a62063c1964d3ecfbf96ba92a95797bb8f5" + }, + "version": "0.5.1" + }, + "com.google.flogger:flogger-system-backend": { + "shasums": { + "jar": "685de33b53eb313049bbeee7f4b7a80dd09e8e754e96b048a3edab2cebb36442" + }, + "version": "0.5.1" + }, + "com.google.flogger:google-extensions": { + "shasums": { + "jar": "8b0862cad85b9549f355fe383c6c63816d2f19529634e033ae06d0107ab110b9" + }, + "version": "0.5.1" + }, + "com.google.guava:failureaccess": { + "shasums": { + "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26" + }, + "version": "1.0.1" + }, + "com.google.guava:guava": { + "shasums": { + "jar": "a42edc9cab792e39fe39bb94f3fca655ed157ff87a8af78e1d6ba5b07c4a00ab" + }, + "version": "31.1-jre" + }, + "com.google.guava:guava-testlib": { + "shasums": { + "jar": "aadc71b10d5c3ac474dd16be84cfb18d257e584d1e0a59f8cab64ef4376226ce" + }, + "version": "31.1-jre" + }, + "com.google.guava:listenablefuture": { + "shasums": { + "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99" + }, + "version": "9999.0-empty-to-avoid-conflict-with-guava" + }, + "com.google.http-client:google-http-client": { + "shasums": { + "jar": "82ca0e08171846d1768d5ac3f13244d6fe5a54102c14735ef40bf15d57d478e5" + }, + "version": "1.42.0" + }, + "com.google.http-client:google-http-client-apache-v2": { + "shasums": { + "jar": "1fc4964236b67cf3c5651d7ac1dff668f73b7810c7f1dc0862a0e5bc01608785" + }, + "version": "1.42.0" + }, + "com.google.http-client:google-http-client-gson": { + "shasums": { + "jar": "cb852272c1cb0c8449d8b1a70f3e0f2c1efb2063e543183faa43078fb446f540" + }, + "version": "1.42.0" + }, + "com.google.inject:guice": { + "shasums": { + "jar": "4130e50bfac48099c860f0d903b91860c81a249c90f38245f8fed58fc817bc26" + }, + "version": "5.1.0" + }, + "com.google.j2objc:j2objc-annotations": { + "shasums": { + "jar": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b" + }, + "version": "1.3" + }, + "com.google.jimfs:jimfs": { + "shasums": { + "jar": "de16d5c8489729a8512f1a02fbd81f58f89249b72066987da4cc5c87ecb9f72d" + }, + "version": "1.2" + }, + "com.google.oauth-client:google-oauth-client": { + "shasums": { + "jar": "193edf97aefa28b93c5892bdc598bac34fa4c396588030084f290b1440e8b98a" + }, + "version": "1.34.1" + }, + "com.google.testing.compile:compile-testing": { + "shasums": { + "jar": "92cfbee5ad356a403d36688ab7bae74be65db9a117478ace34ac3ab4d1f9feb9" + }, + "version": "0.18" + }, + "com.google.truth.extensions:truth-java8-extension": { + "shasums": { + "jar": "2bbd32dd2fa9470d17f1bbda4f52b33b60bce4574052c1d46610a0aa371fc446" + }, + "version": "1.1.3" + }, + "com.google.truth.extensions:truth-liteproto-extension": { + "shasums": { + "jar": "71cce6284554e546d1b5ba48e310ee4b4050676f09fb0eced136d779284ff78d" + }, + "version": "1.1.3" + }, + "com.google.truth.extensions:truth-proto-extension": { + "shasums": { + "jar": "821993e4794e7034ae4a7b68105ef83f1913f0de6112f2fe4b5a7130f6a2bf49" + }, + "version": "1.1.3" + }, + "com.google.truth:truth": { + "shasums": { + "jar": "fc0b67782289a2aabfddfdf99eff1dcd5edc890d49143fcd489214b107b8f4f3" + }, + "version": "1.1.3" + }, + "com.ryanharter.auto.value:auto-value-gson-extension": { + "shasums": { + "jar": "261be84be30a56994e132d718a85efcd579197a2edb9426b84c5722c56955eca" + }, + "version": "1.3.1" + }, + "com.ryanharter.auto.value:auto-value-gson-factory": { + "shasums": { + "jar": "5a76c3d401c984999d59868f08df05a15613d1428f7764fed80b722e2a277f6c" + }, + "version": "1.3.1" + }, + "com.ryanharter.auto.value:auto-value-gson-runtime": { + "shasums": { + "jar": "84ee23b7989d4bf19930b5bd3d03c0f2efb9e73bcee3a0208a9d1b2e1979c049" + }, + "version": "1.3.1" + }, + "com.squareup:javapoet": { + "shasums": { + "jar": "2b70cdfa8c9e997b4007035a266c273c0df341f9c57c9d0b45a680ae3fd882db" + }, + "version": "1.12.0" + }, + "commons-collections:commons-collections": { + "shasums": { + "jar": "eeeae917917144a68a741d4c0dff66aa5c5c5fd85593ff217bced3fc8ca783b8" + }, + "version": "3.2.2" + }, + "commons-lang:commons-lang": { + "shasums": { + "jar": "50f11b09f877c294d56f24463f47d28f929cf5044f648661c0f0cfbae9a2f49c" + }, + "version": "2.6" + }, + "io.github.java-diff-utils:java-diff-utils": { + "shasums": { + "jar": "810232374e76a954949f0e2185cd7d9515addb918cf3da3481f77e07c356b49a" + }, + "version": "4.0" + }, + "io.grpc:grpc-api": { + "shasums": { + "jar": "aeb8d7a1361aa3d8f5a191580fa7f8cbc5ceb53137a4a698590f612f791e2c45" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-auth": { + "shasums": { + "jar": "ae63be5fe345ffdd5157284d90b783138eb31634e274182a8495242f9ad66a56" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-context": { + "shasums": { + "jar": "2fb9007e12f768e9c968f9db292be4ea9cba2ef40fb8d179f3f8746ebdc73c1b" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-core": { + "shasums": { + "jar": "6d472ee6d2b60ef3f3e6801e7cd4dbec5fbbef81e883a0de1fbc55e6defe1cb7" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-netty": { + "shasums": { + "jar": "2a51593342a2ee4f8f1b946dc48d06b02d0721493238e4ae83d1ad66f8b0c9f4" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-protobuf": { + "shasums": { + "jar": "6ab68b0a3bb3834af44208df058be4631425b56ef95f9b9412aa21df3311e8d3" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-protobuf-lite": { + "shasums": { + "jar": "0a4c735bb80e342d418c0ef7d2add7793aaf72b91c449bde2769ea81f1869737" + }, + "version": "1.48.1" + }, + "io.grpc:grpc-stub": { + "shasums": { + "jar": "6436f19cef264fd949fb7a41e11424e373aa3b1096cad0b7e518f1c81aa60f23" + }, + "version": "1.48.1" + }, + "io.netty:netty-buffer": { + "shasums": { + "jar": "007c7d9c378df02d390567d0d7ddf542ffddb021b7313dbf502392113ffabb08" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-codec": { + "shasums": { + "jar": "990c378168dc6364c6ff569701f4f2f122fffe8998b3e189eba4c4d868ed1084" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-codec-dns": { + "shasums": { + "jar": "10a278b19d6393d5637f745007cb26d47dd16d468898dcc4a43e26d39c6cdd29" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-codec-http": { + "shasums": { + "jar": "dacf78ce78ab2d29570325db4cd2451ea589639807de95881a0fa7155a9e6b55" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-codec-http2": { + "shasums": { + "jar": "d96cc09045a1341c6d47494352aa263b87b72fb1d2ea9eca161aa73820bfe8bb" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-codec-socks": { + "shasums": { + "jar": "0ea47b5ba23ca1da8eb9146c8fc755c1271414633b1e2be2ce1df764ba0fff2a" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-common": { + "shasums": { + "jar": "443bb316599fb16e3baeba2fb58881814d7ff0b7af176fe76e38071a6e86f8c0" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-handler": { + "shasums": { + "jar": "4e5f563ae14ed713381816d582f5fcfd0615aefb29203486cdfb782d8a00a02b" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-handler-proxy": { + "shasums": { + "jar": "2ac5f7fbefa0b73ef783889069344d5515505a14b2303be693c5002c486df2b4" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-resolver": { + "shasums": { + "jar": "e59770b66e81822e5d111ac4e544d7eb0c543e0a285f52628e53941acd8ed759" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-resolver-dns": { + "shasums": { + "jar": "2744ccc1bbd653c9f65f5764ab211f51cae56aa6c2e2288850a9add9c805be56" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-tcnative-boringssl-static": { + "shasums": { + "linux-aarch_64": "8e5a30fc4a9514714367813f8027df4c9672746797b0699d83958d678e5cfeca", + "linux-x86_64": "725c26b4dd58a1aa782020952ad949bdb607235dd20ee49e5a5875c15456ca86", + "osx-aarch_64": "3b962ce1361b479ec7375f04e5d149e7b374a99ecf4f583c9aa0f0a92e5fa415", + "osx-x86_64": "9a77e8910af04becbdb535592c6a1e1a9accecde522aa1bb925a023c2c59d6dc", + "windows-x86_64": "b0d9505b09427ab655369506a802358966762edcb7cf08fc162dc2b368a2041c" + }, + "version": "2.0.56.Final" + }, + "io.netty:netty-tcnative-classes": { + "shasums": { + "jar": "eede807f0dd5eb1ad74ea1ae1094430631da63fcde00d4dc20eb0cd048bb0ac3" + }, + "version": "2.0.56.Final" + }, + "io.netty:netty-transport": { + "shasums": { + "jar": "a5a78019bc1cd43dbc3c7b7cdd3801912ca26d1f498fb560514fee497864ba96" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-transport-classes-epoll": { + "shasums": { + "jar": "23722fa366ba017137a68c5e92fc3ee27bbb341c681ac4790f61c6adb7289e26" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-transport-classes-kqueue": { + "shasums": { + "jar": "453fe595c3e12b9228b930b845140aaed93a9fb87d1a5d829c55b31d670def9f" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-transport-native-epoll": { + "shasums": { + "linux-aarch_64": "cca126fd095563fa67288300b6ac2ef4a92e623600e9a3273382211de364695d", + "linux-x86_64": "f87a502f3d257bc41f80bd0b90c19e6b4a48d0600fb26e7b5d6c2c675680fa0e" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-transport-native-kqueue": { + "shasums": { + "osx-aarch_64": "6e9f04b5a16ba95b7371a735d60851602a3f3c549981edb74eeaf90e1b8fecce", + "osx-x86_64": "bf3a21e503d26a600e2469e98f5acaadb57c18f207a51e8a7073b875c5f50e03" + }, + "version": "4.1.93.Final" + }, + "io.netty:netty-transport-native-unix-common": { + "shasums": { + "jar": "774165a1c4dbaacb17f9c1ad666b3569a6a59715ae828e7c3d47703f479a53e7", + "linux-aarch_64": "29675f1d9a2f09e426c0016e5fb89328d38afad0403f1bd1b98f985253d96ad8", + "linux-x86_64": "8923a73ba8a373f7b994906f5902ba9f6bb59d181d4ad01576a6e0c5abb09b67", + "osx-aarch_64": "6c6ecf73016d360e09a1cac31acd953f508309612f1b97d73db2ed0813d8bf14", + "osx-x86_64": "deded602209c23f624e9d91f3d4c27cbba9b303e35ea9b4693090d54ac245b6c" + }, + "version": "4.1.93.Final" + }, + "io.opencensus:opencensus-api": { + "shasums": { + "jar": "f1474d47f4b6b001558ad27b952e35eda5cc7146788877fc52938c6eba24b382" + }, + "version": "0.31.1" + }, + "io.opencensus:opencensus-contrib-http-util": { + "shasums": { + "jar": "3ea995b55a4068be22989b70cc29a4d788c2d328d1d50613a7a9afd13fdd2d0a" + }, + "version": "0.31.1" + }, + "io.perfmark:perfmark-api": { + "shasums": { + "jar": "2044542933fcdf40ad18441bec37646d150c491871157f288847e29cb81de4cb" + }, + "version": "0.25.0" + }, + "io.reactivex.rxjava3:rxjava": { + "shasums": { + "jar": "8d784075bec0b7c55042c109a4de8923b3b6d2ebd2e00912d518f07240f9c23a" + }, + "version": "3.1.2" + }, + "io.sweers.autotransient:autotransient": { + "shasums": { + "jar": "914ce84508410ee1419514925f93b1855a9f7a7b5b5d02fc07f411d2a45f1bba" + }, + "version": "1.0.0" + }, + "javax.activation:javax.activation-api": { + "shasums": { + "jar": "43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393" + }, + "version": "1.2.0" + }, + "javax.annotation:javax.annotation-api": { + "shasums": { + "jar": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b" + }, + "version": "1.3.2" + }, + "javax.inject:javax.inject": { + "shasums": { + "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff" + }, + "version": "1" + }, + "junit:junit": { + "shasums": { + "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3" + }, + "version": "4.13.2" + }, + "net.bytebuddy:byte-buddy": { + "shasums": { + "jar": "e99761a526df0fefbbd3fe14436b0f953000cdfa5151dc63c0b18d37d9c46f1c" + }, + "version": "1.14.5" + }, + "net.bytebuddy:byte-buddy-agent": { + "shasums": { + "jar": "55f19862b870f5d85890ba5386b1b45e9bbc88d5fe1f819abe0c788b4929fa6b" + }, + "version": "1.14.5" + }, + "org.apache.commons:commons-compress": { + "shasums": { + "jar": "ff2d59fad74e867630fbc7daab14c432654712ac624dbee468d220677b124dd5" + }, + "version": "1.19" + }, + "org.apache.commons:commons-pool2": { + "shasums": { + "jar": "5efa9fbb54a58b1a12205a5fac565f6982abfeb0ff45bdbc318748ef5fd3a3ff" + }, + "version": "2.8.0" + }, + "org.apache.tomcat:tomcat-annotations-api": { + "shasums": { + "jar": "748677bebb1651a313317dfd93e984ed8f8c9e345538fa8b0ab0cbb804631953" + }, + "version": "8.0.5" + }, + "org.apache.velocity:velocity": { + "shasums": { + "jar": "ec92dae810034f4b46dbb16ef4364a4013b0efb24a8c5dd67435cae46a290d8e" + }, + "version": "1.7" + }, + "org.checkerframework:checker-compat-qual": { + "shasums": { + "jar": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d" + }, + "version": "2.5.3" + }, + "org.checkerframework:checker-qual": { + "shasums": { + "jar": "a827c49183f3a632277d27a0a4673686cb341507447b9d570261094bd748aa68" + }, + "version": "3.19.0" + }, + "org.checkerframework:dataflow-errorprone": { + "shasums": { + "jar": "fd40ebe6d514e56f8d8fac1b1a2afb1654b2053b571ddce1098b910f0bb395bd" + }, + "version": "3.27.0" + }, + "org.codehaus.mojo:animal-sniffer-annotations": { + "shasums": { + "jar": "2f25841c937e24959a57b630e2c4b8525b3d0f536f2e511c9b2bed30b1651d54" + }, + "version": "1.21" + }, + "org.hamcrest:hamcrest-core": { + "shasums": { + "jar": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9" + }, + "version": "1.3" + }, + "org.mockito:mockito-core": { + "shasums": { + "jar": "b1689b06617ea01fd777bfaedbdde512faf083d639a049f79b388d5a4e96d2e5" + }, + "version": "5.4.0" + }, + "org.objenesis:objenesis": { + "shasums": { + "jar": "02dfd0b0439a5591e35b708ed2f5474eb0948f53abf74637e959b8e4ef69bfeb" + }, + "version": "3.3" + }, + "org.ow2.asm:asm": { + "shasums": { + "jar": "b9d4fe4d71938df38839f0eca42aaaa64cf8b313d678da036f0cb3ca199b47f5" + }, + "version": "9.2" + }, + "org.ow2.asm:asm-analysis": { + "shasums": { + "jar": "878fbe521731c072d14d2d65b983b1beae6ad06fda0007b6a8bae81f73f433c4" + }, + "version": "9.2" + }, + "org.ow2.asm:asm-commons": { + "shasums": { + "jar": "be4ce53138a238bb522cd781cf91f3ba5ce2f6ca93ec62d46a162a127225e0a6" + }, + "version": "9.2" + }, + "org.ow2.asm:asm-tree": { + "shasums": { + "jar": "aabf9bd23091a4ebfc109c1f3ee7cf3e4b89f6ba2d3f51c5243f16b3cffae011" + }, + "version": "9.2" + }, + "org.ow2.asm:asm-util": { + "shasums": { + "jar": "ff5b3cd331ae8a9a804768280da98f50f424fef23dd3c788bb320e08c94ee598" + }, + "version": "9.2" + }, + "org.pcollections:pcollections": { + "shasums": { + "jar": "34f579ba075c8da2c8a0fedd0f04e21eac2fb6c660d90d0fabb573e8b4dc6918" + }, + "version": "3.1.4" + }, + "org.reactivestreams:reactive-streams": { + "shasums": { + "jar": "1dee0481072d19c929b623e155e14d2f6085dc011529a0a0dbefc84cf571d865" + }, + "version": "1.0.3" + }, + "org.threeten:threeten-extra": { + "shasums": { + "jar": "e7def554536188fbaf8aac1a0a2f956b039cbbb5696edc3b8336c442c56ae445" + }, + "version": "1.5.0" + }, + "org.tukaani:xz": { + "shasums": { + "jar": "211b306cfc44f8f96df3a0a3ddaf75ba8c5289eed77d60d72f889bb855f535e5" + }, + "version": "1.9" + }, + "tools.profiler:async-profiler": { + "shasums": { + "jar": "6c4e993c28cf2882964cac82a0f96e81a325840043884526565017b2f62c5ba4" + }, + "version": "2.9" } + }, + "dependencies": { + "com.github.ben-manes.caffeine:caffeine": [ + "com.google.errorprone:error_prone_annotations", + "org.checkerframework:checker-qual" + ], + "com.google.api-client:google-api-client": [ + "com.google.guava:guava", + "com.google.http-client:google-http-client", + "com.google.http-client:google-http-client-apache-v2", + "com.google.http-client:google-http-client-gson", + "com.google.oauth-client:google-oauth-client" + ], + "com.google.api-client:google-api-client-gson": [ + "com.google.api-client:google-api-client", + "com.google.http-client:google-http-client", + "com.google.http-client:google-http-client-gson" + ], + "com.google.auth:google-auth-library-oauth2-http": [ + "com.google.auth:google-auth-library-credentials", + "com.google.auto.value:auto-value-annotations", + "com.google.code.findbugs:jsr305", + "com.google.guava:guava", + "com.google.http-client:google-http-client", + "com.google.http-client:google-http-client-gson" + ], + "com.google.auto.service:auto-service": [ + "com.google.auto.service:auto-service-annotations", + "com.google.auto:auto-common", + "com.google.guava:guava" + ], + "com.google.auto:auto-common": [ + "com.google.guava:guava" + ], + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": [ + "com.google.guava:guava", + "javax.annotation:javax.annotation-api", + "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", + "org.ow2.asm:asm-commons", + "org.ow2.asm:asm-tree", + "org.ow2.asm:asm-util" + ], + "com.google.errorprone:error_prone_annotation": [ + "com.google.guava:guava" + ], + "com.google.errorprone:error_prone_check_api": [ + "com.github.ben-manes.caffeine:caffeine", + "com.github.kevinstern:software-and-algorithms", + "com.google.auto.value:auto-value-annotations", + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotation", + "com.google.errorprone:error_prone_annotations", + "com.google.inject:guice", + "io.github.java-diff-utils:java-diff-utils", + "org.checkerframework:dataflow-errorprone" + ], + "com.google.errorprone:error_prone_core": [ + "com.google.auto.service:auto-service-annotations", + "com.google.auto.value:auto-value-annotations", + "com.google.auto:auto-common", + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotation", + "com.google.errorprone:error_prone_annotations", + "com.google.errorprone:error_prone_check_api", + "com.google.errorprone:error_prone_type_annotations", + "com.google.guava:guava", + "javax.inject:javax.inject", + "org.checkerframework:dataflow-errorprone", + "org.pcollections:pcollections" + ], + "com.google.flogger:flogger": [ + "org.checkerframework:checker-compat-qual" + ], + "com.google.flogger:flogger-system-backend": [ + "com.google.flogger:flogger", + "org.checkerframework:checker-compat-qual" + ], + "com.google.flogger:google-extensions": [ + "com.google.flogger:flogger" + ], + "com.google.guava:guava": [ + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "org.checkerframework:checker-qual" + ], + "com.google.guava:guava-testlib": [ + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "com.google.j2objc:j2objc-annotations", + "junit:junit", + "org.checkerframework:checker-qual" + ], + "com.google.http-client:google-http-client": [ + "com.google.code.findbugs:jsr305", + "com.google.guava:guava", + "com.google.j2objc:j2objc-annotations", + "io.opencensus:opencensus-api", + "io.opencensus:opencensus-contrib-http-util" + ], + "com.google.http-client:google-http-client-apache-v2": [ + "com.google.http-client:google-http-client" + ], + "com.google.http-client:google-http-client-gson": [ + "com.google.code.gson:gson", + "com.google.http-client:google-http-client" + ], + "com.google.inject:guice": [ + "aopalliance:aopalliance", + "com.google.guava:guava", + "javax.inject:javax.inject" + ], + "com.google.jimfs:jimfs": [ + "com.google.guava:guava" + ], + "com.google.oauth-client:google-oauth-client": [ + "com.google.guava:guava", + "com.google.http-client:google-http-client", + "com.google.http-client:google-http-client-gson" + ], + "com.google.testing.compile:compile-testing": [ + "com.google.auto.value:auto-value", + "com.google.auto:auto-common", + "com.google.guava:guava", + "com.google.truth:truth", + "junit:junit" + ], + "com.google.truth.extensions:truth-java8-extension": [ + "com.google.truth:truth", + "org.checkerframework:checker-qual" + ], + "com.google.truth.extensions:truth-liteproto-extension": [ + "com.google.auto.value:auto-value-annotations", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "com.google.truth:truth", + "org.checkerframework:checker-qual" + ], + "com.google.truth.extensions:truth-proto-extension": [ + "com.google.auto.value:auto-value-annotations", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "com.google.truth.extensions:truth-liteproto-extension", + "com.google.truth:truth", + "org.checkerframework:checker-qual" + ], + "com.google.truth:truth": [ + "com.google.auto.value:auto-value-annotations", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "junit:junit", + "org.checkerframework:checker-qual", + "org.ow2.asm:asm" + ], + "com.ryanharter.auto.value:auto-value-gson-extension": [ + "com.google.auto.value:auto-value", + "com.google.auto.value:auto-value-annotations", + "com.google.code.gson:gson", + "com.ryanharter.auto.value:auto-value-gson-runtime", + "com.squareup:javapoet" + ], + "com.ryanharter.auto.value:auto-value-gson-factory": [ + "com.google.auto.value:auto-value-annotations", + "com.google.code.gson:gson", + "com.ryanharter.auto.value:auto-value-gson-extension", + "com.squareup:javapoet" + ], + "com.ryanharter.auto.value:auto-value-gson-runtime": [ + "com.google.code.gson:gson", + "io.sweers.autotransient:autotransient" + ], + "io.grpc:grpc-api": [ + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "io.grpc:grpc-context" + ], + "io.grpc:grpc-auth": [ + "com.google.auth:google-auth-library-credentials", + "com.google.guava:guava", + "io.grpc:grpc-api" + ], + "io.grpc:grpc-core": [ + "com.google.android:annotations", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "io.grpc:grpc-api", + "io.perfmark:perfmark-api", + "org.codehaus.mojo:animal-sniffer-annotations" + ], + "io.grpc:grpc-netty": [ + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "io.grpc:grpc-core", + "io.netty:netty-codec-http2", + "io.netty:netty-handler-proxy", + "io.netty:netty-transport-native-unix-common", + "io.perfmark:perfmark-api" + ], + "io.grpc:grpc-protobuf": [ + "com.google.api.grpc:proto-google-common-protos", + "com.google.code.findbugs:jsr305", + "com.google.guava:guava", + "io.grpc:grpc-api", + "io.grpc:grpc-protobuf-lite" + ], + "io.grpc:grpc-protobuf-lite": [ + "com.google.code.findbugs:jsr305", + "com.google.guava:guava", + "io.grpc:grpc-api" + ], + "io.grpc:grpc-stub": [ + "com.google.errorprone:error_prone_annotations", + "com.google.guava:guava", + "io.grpc:grpc-api" + ], + "io.netty:netty-buffer": [ + "io.netty:netty-common" + ], + "io.netty:netty-codec": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-codec-dns": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-codec-http": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-common", + "io.netty:netty-handler", + "io.netty:netty-transport" + ], + "io.netty:netty-codec-http2": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-codec-http", + "io.netty:netty-common", + "io.netty:netty-handler", + "io.netty:netty-transport" + ], + "io.netty:netty-codec-socks": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-handler": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-common", + "io.netty:netty-resolver", + "io.netty:netty-transport", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-handler-proxy": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-codec-http", + "io.netty:netty-codec-socks", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-resolver": [ + "io.netty:netty-common" + ], + "io.netty:netty-resolver-dns": [ + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-codec-dns", + "io.netty:netty-common", + "io.netty:netty-handler", + "io.netty:netty-resolver", + "io.netty:netty-transport" + ], + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64": [ + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64", + "io.netty:netty-tcnative-classes" + ], + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64": [ + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64", + "io.netty:netty-tcnative-classes" + ], + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64": [ + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64", + "io.netty:netty-tcnative-classes" + ], + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64": [ + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64", + "io.netty:netty-tcnative-classes" + ], + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64": [ + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64", + "io.netty:netty-tcnative-classes" + ], + "io.netty:netty-transport": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-resolver" + ], + "io.netty:netty-transport-classes-epoll": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-classes-kqueue": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-native-epoll:jar:linux-aarch_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-classes-epoll", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-native-epoll:jar:linux-x86_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-classes-epoll", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-classes-kqueue", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-native-kqueue:jar:osx-x86_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport", + "io.netty:netty-transport-classes-kqueue", + "io.netty:netty-transport-native-unix-common" + ], + "io.netty:netty-transport-native-unix-common": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-transport-native-unix-common:jar:linux-x86_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.netty:netty-transport-native-unix-common:jar:osx-x86_64": [ + "io.netty:netty-buffer", + "io.netty:netty-common", + "io.netty:netty-transport" + ], + "io.opencensus:opencensus-api": [ + "io.grpc:grpc-context" + ], + "io.opencensus:opencensus-contrib-http-util": [ + "com.google.guava:guava", + "io.opencensus:opencensus-api" + ], + "io.reactivex.rxjava3:rxjava": [ + "org.reactivestreams:reactive-streams" + ], + "junit:junit": [ + "org.hamcrest:hamcrest-core" + ], + "org.apache.velocity:velocity": [ + "commons-collections:commons-collections", + "commons-lang:commons-lang" + ], + "org.mockito:mockito-core": [ + "net.bytebuddy:byte-buddy", + "net.bytebuddy:byte-buddy-agent", + "org.objenesis:objenesis" + ], + "org.ow2.asm:asm-analysis": [ + "org.ow2.asm:asm-tree" + ], + "org.ow2.asm:asm-commons": [ + "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", + "org.ow2.asm:asm-tree" + ], + "org.ow2.asm:asm-tree": [ + "org.ow2.asm:asm" + ], + "org.ow2.asm:asm-util": [ + "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", + "org.ow2.asm:asm-tree" + ] + }, + "packages": { + "aopalliance:aopalliance": [ + "org.aopalliance.aop", + "org.aopalliance.intercept" + ], + "com.beust:jcommander": [ + "com.beust.ah", + "com.beust.jcommander", + "com.beust.jcommander.converters", + "com.beust.jcommander.defaultprovider", + "com.beust.jcommander.internal", + "com.beust.jcommander.parser", + "com.beust.jcommander.validators" + ], + "com.github.ben-manes.caffeine:caffeine": [ + "com.github.benmanes.caffeine.cache", + "com.github.benmanes.caffeine.cache.stats" + ], + "com.github.kevinstern:software-and-algorithms": [ + "blogspot.software_and_algorithms.stern_library.data_structure", + "blogspot.software_and_algorithms.stern_library.geometry", + "blogspot.software_and_algorithms.stern_library.optimization", + "blogspot.software_and_algorithms.stern_library.string" + ], + "com.github.stephenc.jcip:jcip-annotations": [ + "net.jcip.annotations" + ], + "com.google.android:annotations": [ + "android.annotation" + ], + "com.google.api-client:google-api-client": [ + "com.google.api.client.googleapis", + "com.google.api.client.googleapis.apache", + "com.google.api.client.googleapis.apache.v2", + "com.google.api.client.googleapis.auth.oauth2", + "com.google.api.client.googleapis.batch", + "com.google.api.client.googleapis.batch.json", + "com.google.api.client.googleapis.compute", + "com.google.api.client.googleapis.javanet", + "com.google.api.client.googleapis.json", + "com.google.api.client.googleapis.media", + "com.google.api.client.googleapis.mtls", + "com.google.api.client.googleapis.notifications", + "com.google.api.client.googleapis.notifications.json", + "com.google.api.client.googleapis.services", + "com.google.api.client.googleapis.services.json", + "com.google.api.client.googleapis.testing", + "com.google.api.client.googleapis.testing.auth.oauth2", + "com.google.api.client.googleapis.testing.compute", + "com.google.api.client.googleapis.testing.json", + "com.google.api.client.googleapis.testing.notifications", + "com.google.api.client.googleapis.testing.services", + "com.google.api.client.googleapis.testing.services.json", + "com.google.api.client.googleapis.util" + ], + "com.google.api-client:google-api-client-gson": [ + "com.google.api.client.googleapis.notifications.json.gson" + ], + "com.google.api.grpc:proto-google-common-protos": [ + "com.google.api", + "com.google.cloud", + "com.google.cloud.audit", + "com.google.cloud.location", + "com.google.geo.type", + "com.google.logging.type", + "com.google.longrunning", + "com.google.rpc", + "com.google.rpc.context", + "com.google.type" + ], + "com.google.auth:google-auth-library-credentials": [ + "com.google.auth" + ], + "com.google.auth:google-auth-library-oauth2-http": [ + "com.google.auth.http", + "com.google.auth.oauth2" + ], + "com.google.auto.service:auto-service": [ + "com.google.auto.service.processor" + ], + "com.google.auto.service:auto-service-annotations": [ + "com.google.auto.service" + ], + "com.google.auto.value:auto-value": [ + "autovalue.shaded.com.google$.auto.common", + "autovalue.shaded.com.google$.auto.service", + "autovalue.shaded.com.google$.common.annotations", + "autovalue.shaded.com.google$.common.base", + "autovalue.shaded.com.google$.common.collect", + "autovalue.shaded.com.google$.common.hash", + "autovalue.shaded.com.google$.common.math", + "autovalue.shaded.com.google$.common.primitives", + "autovalue.shaded.com.google$.common.reflect", + "autovalue.shaded.com.google$.errorprone.annotations", + "autovalue.shaded.com.google$.errorprone.annotations.concurrent", + "autovalue.shaded.com.google$.escapevelocity", + "autovalue.shaded.com.google$.j2objc.annotations", + "autovalue.shaded.com.squareup.javapoet$", + "autovalue.shaded.net.ltgt.gradle.incap$", + "autovalue.shaded.org.checkerframework$.checker.nullness.qual", + "autovalue.shaded.org.checkerframework$.framework.qual", + "com.google.auto.value.extension", + "com.google.auto.value.extension.memoized.processor", + "com.google.auto.value.extension.serializable.processor", + "com.google.auto.value.extension.serializable.serializer", + "com.google.auto.value.extension.serializable.serializer.impl", + "com.google.auto.value.extension.serializable.serializer.interfaces", + "com.google.auto.value.extension.serializable.serializer.runtime", + "com.google.auto.value.extension.toprettystring.processor", + "com.google.auto.value.processor" + ], + "com.google.auto.value:auto-value-annotations": [ + "com.google.auto.value", + "com.google.auto.value.extension.memoized", + "com.google.auto.value.extension.serializable", + "com.google.auto.value.extension.toprettystring" + ], + "com.google.auto:auto-common": [ + "com.google.auto.common" + ], + "com.google.code.findbugs:jsr305": [ + "javax.annotation", + "javax.annotation.concurrent", + "javax.annotation.meta" + ], + "com.google.code.gson:gson": [ + "com.google.gson", + "com.google.gson.annotations", + "com.google.gson.internal", + "com.google.gson.internal.bind", + "com.google.gson.internal.bind.util", + "com.google.gson.internal.reflect", + "com.google.gson.internal.sql", + "com.google.gson.reflect", + "com.google.gson.stream" + ], + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": [ + "com.google.monitoring.runtime.instrumentation", + "com.google.monitoring.runtime.instrumentation.asm", + "com.google.monitoring.runtime.instrumentation.asm.commons", + "com.google.monitoring.runtime.instrumentation.asm.signature", + "com.google.monitoring.runtime.instrumentation.asm.tree", + "com.google.monitoring.runtime.instrumentation.asm.tree.analysis", + "com.google.monitoring.runtime.instrumentation.asm.util", + "com.google.monitoring.runtime.instrumentation.checker.nullness.compatqual", + "com.google.monitoring.runtime.instrumentation.common.annotations", + "com.google.monitoring.runtime.instrumentation.common.base", + "com.google.monitoring.runtime.instrumentation.common.base.internal", + "com.google.monitoring.runtime.instrumentation.common.cache", + "com.google.monitoring.runtime.instrumentation.common.collect", + "com.google.monitoring.runtime.instrumentation.common.escape", + "com.google.monitoring.runtime.instrumentation.common.eventbus", + "com.google.monitoring.runtime.instrumentation.common.graph", + "com.google.monitoring.runtime.instrumentation.common.hash", + "com.google.monitoring.runtime.instrumentation.common.html", + "com.google.monitoring.runtime.instrumentation.common.io", + "com.google.monitoring.runtime.instrumentation.common.math", + "com.google.monitoring.runtime.instrumentation.common.net", + "com.google.monitoring.runtime.instrumentation.common.primitives", + "com.google.monitoring.runtime.instrumentation.common.reflect", + "com.google.monitoring.runtime.instrumentation.common.util.concurrent", + "com.google.monitoring.runtime.instrumentation.common.xml", + "com.google.monitoring.runtime.instrumentation.errorprone.annotations", + "com.google.monitoring.runtime.instrumentation.errorprone.annotations.concurrent", + "com.google.monitoring.runtime.instrumentation.j2objc.annotations", + "com.google.thirdparty.publicsuffix" + ], + "com.google.errorprone:error_prone_annotation": [ + "com.google.errorprone" + ], + "com.google.errorprone:error_prone_annotations": [ + "com.google.errorprone.annotations", + "com.google.errorprone.annotations.concurrent" + ], + "com.google.errorprone:error_prone_check_api": [ + "com.google.errorprone", + "com.google.errorprone.apply", + "com.google.errorprone.bugpatterns", + "com.google.errorprone.dataflow", + "com.google.errorprone.dataflow.nullnesspropagation", + "com.google.errorprone.dataflow.nullnesspropagation.inference", + "com.google.errorprone.fixes", + "com.google.errorprone.matchers", + "com.google.errorprone.matchers.method", + "com.google.errorprone.names", + "com.google.errorprone.predicates", + "com.google.errorprone.predicates.type", + "com.google.errorprone.scanner", + "com.google.errorprone.suppliers", + "com.google.errorprone.util" + ], + "com.google.errorprone:error_prone_core": [ + "com.google.errorprone", + "com.google.errorprone.bugpatterns", + "com.google.errorprone.bugpatterns.android", + "com.google.errorprone.bugpatterns.apidiff", + "com.google.errorprone.bugpatterns.argumentselectiondefects", + "com.google.errorprone.bugpatterns.checkreturnvalue", + "com.google.errorprone.bugpatterns.collectionincompatibletype", + "com.google.errorprone.bugpatterns.flogger", + "com.google.errorprone.bugpatterns.formatstring", + "com.google.errorprone.bugpatterns.inject", + "com.google.errorprone.bugpatterns.inject.dagger", + "com.google.errorprone.bugpatterns.inject.guice", + "com.google.errorprone.bugpatterns.inlineme", + "com.google.errorprone.bugpatterns.javadoc", + "com.google.errorprone.bugpatterns.nullness", + "com.google.errorprone.bugpatterns.overloading", + "com.google.errorprone.bugpatterns.threadsafety", + "com.google.errorprone.bugpatterns.time", + "com.google.errorprone.refaster", + "com.google.errorprone.refaster.annotation", + "com.google.errorprone.scanner" + ], + "com.google.errorprone:error_prone_type_annotations": [ + "com.google.errorprone.annotations" + ], + "com.google.flogger:flogger": [ + "com.google.common.flogger", + "com.google.common.flogger.backend", + "com.google.common.flogger.context", + "com.google.common.flogger.parameter", + "com.google.common.flogger.parser", + "com.google.common.flogger.util" + ], + "com.google.flogger:flogger-system-backend": [ + "com.google.common.flogger.backend.system" + ], + "com.google.flogger:google-extensions": [ + "com.google.common.flogger" + ], + "com.google.guava:failureaccess": [ + "com.google.common.util.concurrent.internal" + ], + "com.google.guava:guava": [ + "com.google.common.annotations", + "com.google.common.base", + "com.google.common.base.internal", + "com.google.common.cache", + "com.google.common.collect", + "com.google.common.escape", + "com.google.common.eventbus", + "com.google.common.graph", + "com.google.common.hash", + "com.google.common.html", + "com.google.common.io", + "com.google.common.math", + "com.google.common.net", + "com.google.common.primitives", + "com.google.common.reflect", + "com.google.common.util.concurrent", + "com.google.common.xml", + "com.google.thirdparty.publicsuffix" + ], + "com.google.guava:guava-testlib": [ + "com.google.common.collect.testing", + "com.google.common.collect.testing.features", + "com.google.common.collect.testing.google", + "com.google.common.collect.testing.testers", + "com.google.common.escape.testing", + "com.google.common.testing", + "com.google.common.util.concurrent.testing" + ], + "com.google.http-client:google-http-client": [ + "com.google.api.client.http", + "com.google.api.client.http.apache", + "com.google.api.client.http.javanet", + "com.google.api.client.http.json", + "com.google.api.client.json", + "com.google.api.client.json.rpc2", + "com.google.api.client.json.webtoken", + "com.google.api.client.testing.http", + "com.google.api.client.testing.http.apache", + "com.google.api.client.testing.http.javanet", + "com.google.api.client.testing.json", + "com.google.api.client.testing.json.webtoken", + "com.google.api.client.testing.util", + "com.google.api.client.util", + "com.google.api.client.util.escape", + "com.google.api.client.util.store" + ], + "com.google.http-client:google-http-client-apache-v2": [ + "com.google.api.client.http.apache.v2" + ], + "com.google.http-client:google-http-client-gson": [ + "com.google.api.client.json.gson" + ], + "com.google.inject:guice": [ + "com.google.inject", + "com.google.inject.binder", + "com.google.inject.internal", + "com.google.inject.internal.aop", + "com.google.inject.internal.asm", + "com.google.inject.internal.util", + "com.google.inject.matcher", + "com.google.inject.multibindings", + "com.google.inject.name", + "com.google.inject.spi", + "com.google.inject.util" + ], + "com.google.j2objc:j2objc-annotations": [ + "com.google.j2objc.annotations" + ], + "com.google.jimfs:jimfs": [ + "com.google.common.jimfs" + ], + "com.google.oauth-client:google-oauth-client": [ + "com.google.api.client.auth.oauth", + "com.google.api.client.auth.oauth2", + "com.google.api.client.auth.openidconnect" + ], + "com.google.testing.compile:compile-testing": [ + "com.google.testing.compile" + ], + "com.google.truth.extensions:truth-java8-extension": [ + "com.google.common.truth" + ], + "com.google.truth.extensions:truth-liteproto-extension": [ + "com.google.common.truth.extensions.proto" + ], + "com.google.truth.extensions:truth-proto-extension": [ + "com.google.common.truth.extensions.proto" + ], + "com.google.truth:truth": [ + "com.google.common.truth" + ], + "com.ryanharter.auto.value:auto-value-gson-extension": [ + "autovaluegson.shaded.com.google.auto.common", + "autovaluegson.shaded.com.google.common.annotations", + "autovaluegson.shaded.com.google.common.base", + "autovaluegson.shaded.com.google.common.cache", + "autovaluegson.shaded.com.google.common.collect", + "autovaluegson.shaded.com.google.common.escape", + "autovaluegson.shaded.com.google.common.eventbus", + "autovaluegson.shaded.com.google.common.graph", + "autovaluegson.shaded.com.google.common.hash", + "autovaluegson.shaded.com.google.common.html", + "autovaluegson.shaded.com.google.common.io", + "autovaluegson.shaded.com.google.common.math", + "autovaluegson.shaded.com.google.common.net", + "autovaluegson.shaded.com.google.common.primitives", + "autovaluegson.shaded.com.google.common.reflect", + "autovaluegson.shaded.com.google.common.util.concurrent", + "autovaluegson.shaded.com.google.common.xml", + "com.ryanharter.auto.value.gson" + ], + "com.ryanharter.auto.value:auto-value-gson-factory": [ + "autovaluegson.factory.shaded.com.google.auto.common", + "autovaluegson.factory.shaded.com.google.common.annotations", + "autovaluegson.factory.shaded.com.google.common.base", + "autovaluegson.factory.shaded.com.google.common.cache", + "autovaluegson.factory.shaded.com.google.common.collect", + "autovaluegson.factory.shaded.com.google.common.escape", + "autovaluegson.factory.shaded.com.google.common.eventbus", + "autovaluegson.factory.shaded.com.google.common.graph", + "autovaluegson.factory.shaded.com.google.common.hash", + "autovaluegson.factory.shaded.com.google.common.html", + "autovaluegson.factory.shaded.com.google.common.io", + "autovaluegson.factory.shaded.com.google.common.math", + "autovaluegson.factory.shaded.com.google.common.net", + "autovaluegson.factory.shaded.com.google.common.primitives", + "autovaluegson.factory.shaded.com.google.common.reflect", + "autovaluegson.factory.shaded.com.google.common.util.concurrent", + "autovaluegson.factory.shaded.com.google.common.xml", + "com.ryanharter.auto.value.gson.factory" + ], + "com.ryanharter.auto.value:auto-value-gson-runtime": [ + "com.ryanharter.auto.value.gson", + "com.ryanharter.auto.value.gson.internal" + ], + "com.squareup:javapoet": [ + "com.squareup.javapoet" + ], + "commons-collections:commons-collections": [ + "org.apache.commons.collections", + "org.apache.commons.collections.bag", + "org.apache.commons.collections.bidimap", + "org.apache.commons.collections.buffer", + "org.apache.commons.collections.collection", + "org.apache.commons.collections.comparators", + "org.apache.commons.collections.functors", + "org.apache.commons.collections.iterators", + "org.apache.commons.collections.keyvalue", + "org.apache.commons.collections.list", + "org.apache.commons.collections.map", + "org.apache.commons.collections.set" + ], + "commons-lang:commons-lang": [ + "org.apache.commons.lang", + "org.apache.commons.lang.builder", + "org.apache.commons.lang.enum", + "org.apache.commons.lang.enums", + "org.apache.commons.lang.exception", + "org.apache.commons.lang.math", + "org.apache.commons.lang.mutable", + "org.apache.commons.lang.reflect", + "org.apache.commons.lang.text", + "org.apache.commons.lang.time" + ], + "io.github.java-diff-utils:java-diff-utils": [ + "com.github.difflib", + "com.github.difflib.algorithm", + "com.github.difflib.algorithm.jgit", + "com.github.difflib.algorithm.myers", + "com.github.difflib.patch", + "com.github.difflib.text" + ], + "io.grpc:grpc-api": [ + "io.grpc" + ], + "io.grpc:grpc-auth": [ + "io.grpc.auth" + ], + "io.grpc:grpc-context": [ + "io.grpc" + ], + "io.grpc:grpc-core": [ + "io.grpc.inprocess", + "io.grpc.internal", + "io.grpc.util" + ], + "io.grpc:grpc-netty": [ + "io.grpc.netty" + ], + "io.grpc:grpc-protobuf": [ + "io.grpc.protobuf" + ], + "io.grpc:grpc-protobuf-lite": [ + "io.grpc.protobuf.lite" + ], + "io.grpc:grpc-stub": [ + "io.grpc.stub", + "io.grpc.stub.annotations" + ], + "io.netty:netty-buffer": [ + "io.netty.buffer", + "io.netty.buffer.search" + ], + "io.netty:netty-codec": [ + "io.netty.handler.codec", + "io.netty.handler.codec.base64", + "io.netty.handler.codec.bytes", + "io.netty.handler.codec.compression", + "io.netty.handler.codec.json", + "io.netty.handler.codec.marshalling", + "io.netty.handler.codec.protobuf", + "io.netty.handler.codec.serialization", + "io.netty.handler.codec.string", + "io.netty.handler.codec.xml" + ], + "io.netty:netty-codec-dns": [ + "io.netty.handler.codec.dns" + ], + "io.netty:netty-codec-http": [ + "io.netty.handler.codec.http", + "io.netty.handler.codec.http.cookie", + "io.netty.handler.codec.http.cors", + "io.netty.handler.codec.http.multipart", + "io.netty.handler.codec.http.websocketx", + "io.netty.handler.codec.http.websocketx.extensions", + "io.netty.handler.codec.http.websocketx.extensions.compression", + "io.netty.handler.codec.rtsp", + "io.netty.handler.codec.spdy" + ], + "io.netty:netty-codec-http2": [ + "io.netty.handler.codec.http2" + ], + "io.netty:netty-codec-socks": [ + "io.netty.handler.codec.socks", + "io.netty.handler.codec.socksx", + "io.netty.handler.codec.socksx.v4", + "io.netty.handler.codec.socksx.v5" + ], + "io.netty:netty-common": [ + "io.netty.util", + "io.netty.util.collection", + "io.netty.util.concurrent", + "io.netty.util.internal", + "io.netty.util.internal.logging", + "io.netty.util.internal.shaded.org.jctools.queues", + "io.netty.util.internal.shaded.org.jctools.queues.atomic", + "io.netty.util.internal.shaded.org.jctools.util", + "io.netty.util.internal.svm" + ], + "io.netty:netty-handler": [ + "io.netty.handler.address", + "io.netty.handler.flow", + "io.netty.handler.flush", + "io.netty.handler.ipfilter", + "io.netty.handler.logging", + "io.netty.handler.pcap", + "io.netty.handler.ssl", + "io.netty.handler.ssl.ocsp", + "io.netty.handler.ssl.util", + "io.netty.handler.stream", + "io.netty.handler.timeout", + "io.netty.handler.traffic" + ], + "io.netty:netty-handler-proxy": [ + "io.netty.handler.proxy" + ], + "io.netty:netty-resolver": [ + "io.netty.resolver" + ], + "io.netty:netty-resolver-dns": [ + "io.netty.resolver.dns" + ], + "io.netty:netty-tcnative-classes": [ + "io.netty.internal.tcnative" + ], + "io.netty:netty-transport": [ + "io.netty.bootstrap", + "io.netty.channel", + "io.netty.channel.embedded", + "io.netty.channel.group", + "io.netty.channel.internal", + "io.netty.channel.local", + "io.netty.channel.nio", + "io.netty.channel.oio", + "io.netty.channel.pool", + "io.netty.channel.socket", + "io.netty.channel.socket.nio", + "io.netty.channel.socket.oio" + ], + "io.netty:netty-transport-classes-epoll": [ + "io.netty.channel.epoll" + ], + "io.netty:netty-transport-classes-kqueue": [ + "io.netty.channel.kqueue" + ], + "io.netty:netty-transport-native-unix-common": [ + "io.netty.channel.unix" + ], + "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64": [ + "io.netty.channel.unix" + ], + "io.netty:netty-transport-native-unix-common:jar:linux-x86_64": [ + "io.netty.channel.unix" + ], + "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64": [ + "io.netty.channel.unix" + ], + "io.netty:netty-transport-native-unix-common:jar:osx-x86_64": [ + "io.netty.channel.unix" + ], + "io.opencensus:opencensus-api": [ + "io.opencensus.common", + "io.opencensus.internal", + "io.opencensus.metrics", + "io.opencensus.metrics.data", + "io.opencensus.metrics.export", + "io.opencensus.resource", + "io.opencensus.stats", + "io.opencensus.tags", + "io.opencensus.tags.propagation", + "io.opencensus.tags.unsafe", + "io.opencensus.trace", + "io.opencensus.trace.config", + "io.opencensus.trace.export", + "io.opencensus.trace.internal", + "io.opencensus.trace.propagation", + "io.opencensus.trace.samplers", + "io.opencensus.trace.unsafe" + ], + "io.opencensus:opencensus-contrib-http-util": [ + "io.opencensus.contrib.http", + "io.opencensus.contrib.http.util" + ], + "io.perfmark:perfmark-api": [ + "io.perfmark" + ], + "io.reactivex.rxjava3:rxjava": [ + "io.reactivex.rxjava3.annotations", + "io.reactivex.rxjava3.core", + "io.reactivex.rxjava3.disposables", + "io.reactivex.rxjava3.exceptions", + "io.reactivex.rxjava3.flowables", + "io.reactivex.rxjava3.functions", + "io.reactivex.rxjava3.internal.disposables", + "io.reactivex.rxjava3.internal.functions", + "io.reactivex.rxjava3.internal.fuseable", + "io.reactivex.rxjava3.internal.jdk8", + "io.reactivex.rxjava3.internal.observers", + "io.reactivex.rxjava3.internal.operators.completable", + "io.reactivex.rxjava3.internal.operators.flowable", + "io.reactivex.rxjava3.internal.operators.maybe", + "io.reactivex.rxjava3.internal.operators.mixed", + "io.reactivex.rxjava3.internal.operators.observable", + "io.reactivex.rxjava3.internal.operators.parallel", + "io.reactivex.rxjava3.internal.operators.single", + "io.reactivex.rxjava3.internal.queue", + "io.reactivex.rxjava3.internal.schedulers", + "io.reactivex.rxjava3.internal.subscribers", + "io.reactivex.rxjava3.internal.subscriptions", + "io.reactivex.rxjava3.internal.util", + "io.reactivex.rxjava3.observables", + "io.reactivex.rxjava3.observers", + "io.reactivex.rxjava3.operators", + "io.reactivex.rxjava3.parallel", + "io.reactivex.rxjava3.plugins", + "io.reactivex.rxjava3.processors", + "io.reactivex.rxjava3.schedulers", + "io.reactivex.rxjava3.subjects", + "io.reactivex.rxjava3.subscribers" + ], + "io.sweers.autotransient:autotransient": [ + "io.sweers.autotransient" + ], + "javax.activation:javax.activation-api": [ + "javax.activation" + ], + "javax.annotation:javax.annotation-api": [ + "javax.annotation", + "javax.annotation.security", + "javax.annotation.sql" + ], + "javax.inject:javax.inject": [ + "javax.inject" + ], + "junit:junit": [ + "junit.extensions", + "junit.framework", + "junit.runner", + "junit.textui", + "org.junit", + "org.junit.experimental", + "org.junit.experimental.categories", + "org.junit.experimental.max", + "org.junit.experimental.results", + "org.junit.experimental.runners", + "org.junit.experimental.theories", + "org.junit.experimental.theories.internal", + "org.junit.experimental.theories.suppliers", + "org.junit.function", + "org.junit.internal", + "org.junit.internal.builders", + "org.junit.internal.management", + "org.junit.internal.matchers", + "org.junit.internal.requests", + "org.junit.internal.runners", + "org.junit.internal.runners.model", + "org.junit.internal.runners.rules", + "org.junit.internal.runners.statements", + "org.junit.matchers", + "org.junit.rules", + "org.junit.runner", + "org.junit.runner.manipulation", + "org.junit.runner.notification", + "org.junit.runners", + "org.junit.runners.model", + "org.junit.runners.parameterized", + "org.junit.validator" + ], + "net.bytebuddy:byte-buddy": [ + "net.bytebuddy", + "net.bytebuddy.agent.builder", + "net.bytebuddy.asm", + "net.bytebuddy.build", + "net.bytebuddy.description", + "net.bytebuddy.description.annotation", + "net.bytebuddy.description.enumeration", + "net.bytebuddy.description.field", + "net.bytebuddy.description.method", + "net.bytebuddy.description.modifier", + "net.bytebuddy.description.type", + "net.bytebuddy.dynamic", + "net.bytebuddy.dynamic.loading", + "net.bytebuddy.dynamic.scaffold", + "net.bytebuddy.dynamic.scaffold.inline", + "net.bytebuddy.dynamic.scaffold.subclass", + "net.bytebuddy.implementation", + "net.bytebuddy.implementation.attribute", + "net.bytebuddy.implementation.auxiliary", + "net.bytebuddy.implementation.bind", + "net.bytebuddy.implementation.bind.annotation", + "net.bytebuddy.implementation.bytecode", + "net.bytebuddy.implementation.bytecode.assign", + "net.bytebuddy.implementation.bytecode.assign.primitive", + "net.bytebuddy.implementation.bytecode.assign.reference", + "net.bytebuddy.implementation.bytecode.collection", + "net.bytebuddy.implementation.bytecode.constant", + "net.bytebuddy.implementation.bytecode.member", + "net.bytebuddy.jar.asm", + "net.bytebuddy.jar.asm.commons", + "net.bytebuddy.jar.asm.signature", + "net.bytebuddy.matcher", + "net.bytebuddy.pool", + "net.bytebuddy.utility", + "net.bytebuddy.utility.dispatcher", + "net.bytebuddy.utility.nullability", + "net.bytebuddy.utility.privilege", + "net.bytebuddy.utility.visitor" + ], + "net.bytebuddy:byte-buddy-agent": [ + "net.bytebuddy.agent", + "net.bytebuddy.agent.utility.nullability" + ], + "org.apache.commons:commons-compress": [ + "org.apache.commons.compress", + "org.apache.commons.compress.archivers", + "org.apache.commons.compress.archivers.ar", + "org.apache.commons.compress.archivers.arj", + "org.apache.commons.compress.archivers.cpio", + "org.apache.commons.compress.archivers.dump", + "org.apache.commons.compress.archivers.examples", + "org.apache.commons.compress.archivers.jar", + "org.apache.commons.compress.archivers.sevenz", + "org.apache.commons.compress.archivers.tar", + "org.apache.commons.compress.archivers.zip", + "org.apache.commons.compress.changes", + "org.apache.commons.compress.compressors", + "org.apache.commons.compress.compressors.brotli", + "org.apache.commons.compress.compressors.bzip2", + "org.apache.commons.compress.compressors.deflate", + "org.apache.commons.compress.compressors.deflate64", + "org.apache.commons.compress.compressors.gzip", + "org.apache.commons.compress.compressors.lz4", + "org.apache.commons.compress.compressors.lz77support", + "org.apache.commons.compress.compressors.lzma", + "org.apache.commons.compress.compressors.lzw", + "org.apache.commons.compress.compressors.pack200", + "org.apache.commons.compress.compressors.snappy", + "org.apache.commons.compress.compressors.xz", + "org.apache.commons.compress.compressors.z", + "org.apache.commons.compress.compressors.zstandard", + "org.apache.commons.compress.parallel", + "org.apache.commons.compress.utils" + ], + "org.apache.commons:commons-pool2": [ + "org.apache.commons.pool2", + "org.apache.commons.pool2.impl", + "org.apache.commons.pool2.proxy" + ], + "org.apache.tomcat:tomcat-annotations-api": [ + "javax.annotation", + "javax.annotation.security", + "javax.annotation.sql", + "javax.ejb", + "javax.persistence", + "javax.xml.ws" + ], + "org.apache.velocity:velocity": [ + "org.apache.velocity", + "org.apache.velocity.anakia", + "org.apache.velocity.app", + "org.apache.velocity.app.event", + "org.apache.velocity.app.event.implement", + "org.apache.velocity.app.tools", + "org.apache.velocity.context", + "org.apache.velocity.convert", + "org.apache.velocity.exception", + "org.apache.velocity.io", + "org.apache.velocity.runtime", + "org.apache.velocity.runtime.directive", + "org.apache.velocity.runtime.log", + "org.apache.velocity.runtime.parser", + "org.apache.velocity.runtime.parser.node", + "org.apache.velocity.runtime.resource", + "org.apache.velocity.runtime.resource.loader", + "org.apache.velocity.runtime.resource.util", + "org.apache.velocity.runtime.visitor", + "org.apache.velocity.servlet", + "org.apache.velocity.texen", + "org.apache.velocity.texen.ant", + "org.apache.velocity.texen.util", + "org.apache.velocity.util", + "org.apache.velocity.util.introspection" + ], + "org.checkerframework:checker-compat-qual": [ + "org.checkerframework.checker.nullness.compatqual" + ], + "org.checkerframework:checker-qual": [ + "org.checkerframework.checker.builder.qual", + "org.checkerframework.checker.calledmethods.qual", + "org.checkerframework.checker.compilermsgs.qual", + "org.checkerframework.checker.fenum.qual", + "org.checkerframework.checker.formatter.qual", + "org.checkerframework.checker.guieffect.qual", + "org.checkerframework.checker.i18n.qual", + "org.checkerframework.checker.i18nformatter.qual", + "org.checkerframework.checker.index.qual", + "org.checkerframework.checker.initialization.qual", + "org.checkerframework.checker.interning.qual", + "org.checkerframework.checker.lock.qual", + "org.checkerframework.checker.mustcall.qual", + "org.checkerframework.checker.nullness.qual", + "org.checkerframework.checker.optional.qual", + "org.checkerframework.checker.propkey.qual", + "org.checkerframework.checker.regex.qual", + "org.checkerframework.checker.signature.qual", + "org.checkerframework.checker.signedness.qual", + "org.checkerframework.checker.tainting.qual", + "org.checkerframework.checker.units.qual", + "org.checkerframework.common.aliasing.qual", + "org.checkerframework.common.initializedfields.qual", + "org.checkerframework.common.reflection.qual", + "org.checkerframework.common.returnsreceiver.qual", + "org.checkerframework.common.subtyping.qual", + "org.checkerframework.common.util.report.qual", + "org.checkerframework.common.value.qual", + "org.checkerframework.dataflow.qual", + "org.checkerframework.framework.qual" + ], + "org.checkerframework:dataflow-errorprone": [ + "org.checkerframework.dataflow.qual", + "org.checkerframework.errorprone.checker.builder.qual", + "org.checkerframework.errorprone.checker.calledmethods.qual", + "org.checkerframework.errorprone.checker.compilermsgs.qual", + "org.checkerframework.errorprone.checker.fenum.qual", + "org.checkerframework.errorprone.checker.formatter.qual", + "org.checkerframework.errorprone.checker.guieffect.qual", + "org.checkerframework.errorprone.checker.i18n.qual", + "org.checkerframework.errorprone.checker.i18nformatter.qual", + "org.checkerframework.errorprone.checker.index.qual", + "org.checkerframework.errorprone.checker.initialization.qual", + "org.checkerframework.errorprone.checker.interning.qual", + "org.checkerframework.errorprone.checker.lock.qual", + "org.checkerframework.errorprone.checker.mustcall.qual", + "org.checkerframework.errorprone.checker.nullness.qual", + "org.checkerframework.errorprone.checker.optional.qual", + "org.checkerframework.errorprone.checker.propkey.qual", + "org.checkerframework.errorprone.checker.regex.qual", + "org.checkerframework.errorprone.checker.signature.qual", + "org.checkerframework.errorprone.checker.signedness.qual", + "org.checkerframework.errorprone.checker.tainting.qual", + "org.checkerframework.errorprone.checker.units.qual", + "org.checkerframework.errorprone.common.aliasing.qual", + "org.checkerframework.errorprone.common.initializedfields.qual", + "org.checkerframework.errorprone.common.reflection.qual", + "org.checkerframework.errorprone.common.returnsreceiver.qual", + "org.checkerframework.errorprone.common.subtyping.qual", + "org.checkerframework.errorprone.common.util.report.qual", + "org.checkerframework.errorprone.common.value.qual", + "org.checkerframework.errorprone.dataflow.analysis", + "org.checkerframework.errorprone.dataflow.cfg", + "org.checkerframework.errorprone.dataflow.cfg.block", + "org.checkerframework.errorprone.dataflow.cfg.builder", + "org.checkerframework.errorprone.dataflow.cfg.node", + "org.checkerframework.errorprone.dataflow.cfg.playground", + "org.checkerframework.errorprone.dataflow.cfg.visualize", + "org.checkerframework.errorprone.dataflow.constantpropagation", + "org.checkerframework.errorprone.dataflow.expression", + "org.checkerframework.errorprone.dataflow.livevariable", + "org.checkerframework.errorprone.dataflow.util", + "org.checkerframework.errorprone.framework.qual", + "org.checkerframework.errorprone.framework.util", + "org.checkerframework.errorprone.javacutil", + "org.checkerframework.errorprone.javacutil.trees", + "org.checkerframework.errorprone.org.plumelib.reflection", + "org.checkerframework.errorprone.org.plumelib.util" + ], + "org.codehaus.mojo:animal-sniffer-annotations": [ + "org.codehaus.mojo.animal_sniffer" + ], + "org.hamcrest:hamcrest-core": [ + "org.hamcrest", + "org.hamcrest.core", + "org.hamcrest.internal" + ], + "org.mockito:mockito-core": [ + "org.mockito", + "org.mockito.codegen", + "org.mockito.configuration", + "org.mockito.creation.instance", + "org.mockito.exceptions.base", + "org.mockito.exceptions.misusing", + "org.mockito.exceptions.stacktrace", + "org.mockito.exceptions.verification", + "org.mockito.exceptions.verification.junit", + "org.mockito.exceptions.verification.opentest4j", + "org.mockito.hamcrest", + "org.mockito.internal", + "org.mockito.internal.configuration", + "org.mockito.internal.configuration.injection", + "org.mockito.internal.configuration.injection.filter", + "org.mockito.internal.configuration.injection.scanner", + "org.mockito.internal.configuration.plugins", + "org.mockito.internal.creation", + "org.mockito.internal.creation.bytebuddy", + "org.mockito.internal.creation.instance", + "org.mockito.internal.creation.proxy", + "org.mockito.internal.creation.settings", + "org.mockito.internal.creation.util", + "org.mockito.internal.debugging", + "org.mockito.internal.exceptions", + "org.mockito.internal.exceptions.stacktrace", + "org.mockito.internal.exceptions.util", + "org.mockito.internal.framework", + "org.mockito.internal.hamcrest", + "org.mockito.internal.handler", + "org.mockito.internal.invocation", + "org.mockito.internal.invocation.finder", + "org.mockito.internal.invocation.mockref", + "org.mockito.internal.junit", + "org.mockito.internal.listeners", + "org.mockito.internal.matchers", + "org.mockito.internal.matchers.apachecommons", + "org.mockito.internal.matchers.text", + "org.mockito.internal.progress", + "org.mockito.internal.reporting", + "org.mockito.internal.runners", + "org.mockito.internal.runners.util", + "org.mockito.internal.session", + "org.mockito.internal.stubbing", + "org.mockito.internal.stubbing.answers", + "org.mockito.internal.stubbing.defaultanswers", + "org.mockito.internal.util", + "org.mockito.internal.util.collections", + "org.mockito.internal.util.concurrent", + "org.mockito.internal.util.io", + "org.mockito.internal.util.reflection", + "org.mockito.internal.verification", + "org.mockito.internal.verification.api", + "org.mockito.internal.verification.argumentmatching", + "org.mockito.internal.verification.checkers", + "org.mockito.invocation", + "org.mockito.junit", + "org.mockito.listeners", + "org.mockito.mock", + "org.mockito.plugins", + "org.mockito.quality", + "org.mockito.session", + "org.mockito.stubbing", + "org.mockito.verification" + ], + "org.objenesis:objenesis": [ + "org.objenesis", + "org.objenesis.instantiator", + "org.objenesis.instantiator.android", + "org.objenesis.instantiator.annotations", + "org.objenesis.instantiator.basic", + "org.objenesis.instantiator.gcj", + "org.objenesis.instantiator.perc", + "org.objenesis.instantiator.sun", + "org.objenesis.instantiator.util", + "org.objenesis.strategy" + ], + "org.ow2.asm:asm": [ + "org.objectweb.asm", + "org.objectweb.asm.signature" + ], + "org.ow2.asm:asm-analysis": [ + "org.objectweb.asm.tree.analysis" + ], + "org.ow2.asm:asm-commons": [ + "org.objectweb.asm.commons" + ], + "org.ow2.asm:asm-tree": [ + "org.objectweb.asm.tree" + ], + "org.ow2.asm:asm-util": [ + "org.objectweb.asm.util" + ], + "org.pcollections:pcollections": [ + "org.pcollections" + ], + "org.reactivestreams:reactive-streams": [ + "org.reactivestreams" + ], + "org.threeten:threeten-extra": [ + "org.threeten.extra", + "org.threeten.extra.chrono", + "org.threeten.extra.scale" + ], + "org.tukaani:xz": [ + "org.tukaani.xz", + "org.tukaani.xz.check", + "org.tukaani.xz.common", + "org.tukaani.xz.delta", + "org.tukaani.xz.index", + "org.tukaani.xz.lz", + "org.tukaani.xz.lzma", + "org.tukaani.xz.rangecoder", + "org.tukaani.xz.simple" + ], + "tools.profiler:async-profiler": [ + "one.profiler" + ] + }, + "repositories": { + "https://repo1.maven.org/maven2/": [ + "aopalliance:aopalliance", + "com.beust:jcommander", + "com.github.ben-manes.caffeine:caffeine", + "com.github.kevinstern:software-and-algorithms", + "com.github.stephenc.jcip:jcip-annotations", + "com.google.android:annotations", + "com.google.api-client:google-api-client", + "com.google.api-client:google-api-client-gson", + "com.google.api.grpc:proto-google-common-protos", + "com.google.auth:google-auth-library-credentials", + "com.google.auth:google-auth-library-oauth2-http", + "com.google.auto.service:auto-service", + "com.google.auto.service:auto-service-annotations", + "com.google.auto.value:auto-value", + "com.google.auto.value:auto-value-annotations", + "com.google.auto:auto-common", + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter", + "com.google.errorprone:error_prone_annotation", + "com.google.errorprone:error_prone_annotations", + "com.google.errorprone:error_prone_check_api", + "com.google.errorprone:error_prone_core", + "com.google.errorprone:error_prone_type_annotations", + "com.google.flogger:flogger", + "com.google.flogger:flogger-system-backend", + "com.google.flogger:google-extensions", + "com.google.guava:failureaccess", + "com.google.guava:guava", + "com.google.guava:guava-testlib", + "com.google.guava:listenablefuture", + "com.google.http-client:google-http-client", + "com.google.http-client:google-http-client-apache-v2", + "com.google.http-client:google-http-client-gson", + "com.google.inject:guice", + "com.google.j2objc:j2objc-annotations", + "com.google.jimfs:jimfs", + "com.google.oauth-client:google-oauth-client", + "com.google.testing.compile:compile-testing", + "com.google.truth.extensions:truth-java8-extension", + "com.google.truth.extensions:truth-liteproto-extension", + "com.google.truth.extensions:truth-proto-extension", + "com.google.truth:truth", + "com.ryanharter.auto.value:auto-value-gson-extension", + "com.ryanharter.auto.value:auto-value-gson-factory", + "com.ryanharter.auto.value:auto-value-gson-runtime", + "com.squareup:javapoet", + "commons-collections:commons-collections", + "commons-lang:commons-lang", + "io.github.java-diff-utils:java-diff-utils", + "io.grpc:grpc-api", + "io.grpc:grpc-auth", + "io.grpc:grpc-context", + "io.grpc:grpc-core", + "io.grpc:grpc-netty", + "io.grpc:grpc-protobuf", + "io.grpc:grpc-protobuf-lite", + "io.grpc:grpc-stub", + "io.netty:netty-buffer", + "io.netty:netty-codec", + "io.netty:netty-codec-dns", + "io.netty:netty-codec-http", + "io.netty:netty-codec-http2", + "io.netty:netty-codec-socks", + "io.netty:netty-common", + "io.netty:netty-handler", + "io.netty:netty-handler-proxy", + "io.netty:netty-resolver", + "io.netty:netty-resolver-dns", + "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64", + "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64", + "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64", + "io.netty:netty-tcnative-classes", + "io.netty:netty-transport", + "io.netty:netty-transport-classes-epoll", + "io.netty:netty-transport-classes-kqueue", + "io.netty:netty-transport-native-epoll:jar:linux-aarch_64", + "io.netty:netty-transport-native-epoll:jar:linux-x86_64", + "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64", + "io.netty:netty-transport-native-kqueue:jar:osx-x86_64", + "io.netty:netty-transport-native-unix-common", + "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64", + "io.netty:netty-transport-native-unix-common:jar:linux-x86_64", + "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64", + "io.netty:netty-transport-native-unix-common:jar:osx-x86_64", + "io.opencensus:opencensus-api", + "io.opencensus:opencensus-contrib-http-util", + "io.perfmark:perfmark-api", + "io.reactivex.rxjava3:rxjava", + "io.sweers.autotransient:autotransient", + "javax.activation:javax.activation-api", + "javax.annotation:javax.annotation-api", + "javax.inject:javax.inject", + "junit:junit", + "net.bytebuddy:byte-buddy", + "net.bytebuddy:byte-buddy-agent", + "org.apache.commons:commons-compress", + "org.apache.commons:commons-pool2", + "org.apache.tomcat:tomcat-annotations-api", + "org.apache.velocity:velocity", + "org.checkerframework:checker-compat-qual", + "org.checkerframework:checker-qual", + "org.checkerframework:dataflow-errorprone", + "org.codehaus.mojo:animal-sniffer-annotations", + "org.hamcrest:hamcrest-core", + "org.mockito:mockito-core", + "org.objenesis:objenesis", + "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", + "org.ow2.asm:asm-commons", + "org.ow2.asm:asm-tree", + "org.ow2.asm:asm-util", + "org.pcollections:pcollections", + "org.reactivestreams:reactive-streams", + "org.threeten:threeten-extra", + "org.tukaani:xz", + "tools.profiler:async-profiler" + ] + }, + "version": "2" } diff --git a/scripts/bootstrap/BUILD.bootstrap b/scripts/bootstrap/BUILD.bootstrap index 825d95886d725a..a75e9062f7cc91 100644 --- a/scripts/bootstrap/BUILD.bootstrap +++ b/scripts/bootstrap/BUILD.bootstrap @@ -3,7 +3,7 @@ load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolcha # This toolchain is used to bootstrap Bazel. default_java_toolchain( name = "bootstrap_toolchain", - bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath.jar"], + bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"], genclass = ["//src/java_tools/buildjar:bootstrap_genclass_deploy.jar"], header_compiler = None, # avoid remote_java_tools dependency header_compiler_direct = None, # ditto diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh index 56dcf8753fd97c..db183a67301aa4 100755 --- a/scripts/bootstrap/compile.sh +++ b/scripts/bootstrap/compile.sh @@ -330,6 +330,9 @@ mkdir -p ${ARCHIVE_DIR} # Prepare @platforms local repository link_dir ${PWD}/platforms ${ARCHIVE_DIR}/platforms +# Prepare @rules_java_builtin local repository +link_dir ${PWD}/rules_java ${ARCHIVE_DIR}/rules_java + # Dummy build-runfiles (we can't compile C++ yet, so we can't have the real one) if [ "${PLATFORM}" = "windows" ]; then # We don't rely on runfiles trees on Windows diff --git a/scripts/docs/rewriter.py b/scripts/docs/rewriter.py index 7675e53f924071..a7f2aa7e0d8d10 100644 --- a/scripts/docs/rewriter.py +++ b/scripts/docs/rewriter.py @@ -51,8 +51,9 @@ def _fix_md_metadata(content, version): return _MD_METADATA_PATTERN.sub(r"\1/versions/{}\2".format(version), content) -_YAML_PATH_PATTERN = re.compile(r"((book_|image_)?path: ['\"]?)(/.*?)(['\"]?)$", - re.MULTILINE) +_YAML_PATH_PATTERN = re.compile( + r"(((book_|image_)?path|include): ['\"]?)(/.*?)(['\"]?)$", re.MULTILINE +) _YAML_IGNORE_LIST = frozenset( ["/", "/_project.yaml", "/versions/", "/versions/_toc.yaml"]) @@ -61,7 +62,7 @@ def _fix_md_metadata(content, version): def _fix_yaml_paths(content, version): def sub(m): - prefix, path, suffix = m.group(1, 3, 4) + prefix, path, suffix = m.group(1, 4, 5) if path in _YAML_IGNORE_LIST: return m.group(0) diff --git a/scripts/docs/testdata/expected_output/_book.yaml b/scripts/docs/testdata/expected_output/_book.yaml index 4860928f316605..251d9b1defbe3e 100644 --- a/scripts/docs/testdata/expected_output/_book.yaml +++ b/scripts/docs/testdata/expected_output/_book.yaml @@ -33,3 +33,5 @@ upper_tabs: path: /versions/ - title: Update versions with Bazelisk path: /versions/6.6.6/versions/updating-bazel + - title: Build encyclopedia + include: /versions/6.6.6/reference/be/_toc.yaml diff --git a/scripts/docs/testdata/input/_book.yaml b/scripts/docs/testdata/input/_book.yaml index 5153515b9f4e04..403f0df1350164 100644 --- a/scripts/docs/testdata/input/_book.yaml +++ b/scripts/docs/testdata/input/_book.yaml @@ -33,3 +33,5 @@ upper_tabs: path: /versions/ - title: Update versions with Bazelisk path: /versions/updating-bazel + - title: Build encyclopedia + include: /reference/be/_toc.yaml diff --git a/scripts/packages/debian/BUILD b/scripts/packages/debian/BUILD index d39391a75a0133..207479cac4d1e5 100644 --- a/scripts/packages/debian/BUILD +++ b/scripts/packages/debian/BUILD @@ -95,7 +95,7 @@ pkg_deb( ], description_file = "description", homepage = "https://bazel.build", - maintainer = "The Bazel Authors ", + maintainer = "The Bazel Authors ", package = "bazel", suggests = [ # Keep in sync with Suggests section in ./control diff --git a/scripts/packages/debian/control b/scripts/packages/debian/control index ad2455b132121b..546f9e215aa801 100644 --- a/scripts/packages/debian/control +++ b/scripts/packages/debian/control @@ -1,7 +1,7 @@ Source: bazel Section: contrib/devel Priority: optional -Maintainer: The Bazel Authors +Maintainer: The Bazel Authors Build-Depends: dpkg-dev, devscripts Standards-Version: 3.9.6 diff --git a/scripts/packages/debian/generate_changelog.py b/scripts/packages/debian/generate_changelog.py index 222abc70b10312..4dbe4bfefd6d88 100644 --- a/scripts/packages/debian/generate_changelog.py +++ b/scripts/packages/debian/generate_changelog.py @@ -35,8 +35,9 @@ def main(input_file, output_file): changelog_out.write("bazel (0.1.0~HEAD) unstable; urgency=low\n") changelog_out.write("\n Development version\n") changelog_out.write( - "\n -- The Bazel Authors %s\n\n" % - datetime.now().strftime("%a, %d %b %Y %H:%M:%S +0100")) + "\n -- The Bazel Authors %s\n\n" + % datetime.now().strftime("%a, %d %b %Y %H:%M:%S +0100") + ) if __name__ == "__main__": diff --git a/scripts/release/relnotes.py b/scripts/release/relnotes.py index 838d1f2931fe37..da3c9fe1ad0678 100644 --- a/scripts/release/relnotes.py +++ b/scripts/release/relnotes.py @@ -16,23 +16,17 @@ import re import subprocess - +import sys import requests -def get_last_release(): - """Discovers the last stable release name from GitHub.""" - response = requests.get("https://github.com/bazelbuild/bazel/releases/latest") - return response.url.split("/")[-1] - - def git(*args): """Runs git as a subprocess, and returns its stdout as a list of lines.""" return subprocess.check_output(["git"] + list(args)).decode("utf-8").strip().split("\n") -def extract_relnotes(commit_message_lines): +def extract_relnotes(commit_message_lines, is_major_release): """Extracts relnotes from a commit message (passed in as a list of lines).""" relnote_lines = [] in_relnote = False @@ -50,14 +44,27 @@ def extract_relnotes(commit_message_lines): relnote_lines.append(line) relnote = " ".join(relnote_lines) relnote_lower = relnote.strip().lower().rstrip(".") - if relnote_lower == "n/a" or relnote_lower == "none": - return None + if relnote_lower == "n/a" or relnote_lower == "none" or not relnote_lower: + if is_major_release: + return None + relnote = re.sub( + r"\[\d+\.\d+\.\d\]\s?", "", commit_message_lines[0].strip() + ) + else: + issue_id = re.search( + r"\(\#[0-9]+\)$", commit_message_lines[0].strip().split()[-1] + ) + if issue_id: + relnote = relnote + " " + issue_id.group(0).strip() + return relnote -def get_relnotes_between(base, head): +def get_relnotes_between(base, head, is_major_release): """Gets all relnotes for commits between `base` and `head`.""" - commits = git("rev-list", f"{base}..{head}", "--grep=RELNOTES") + commits = git("rev-list", f"{base}..{head}") + if commits == [""]: + return [] relnotes = [] rolled_back_commits = set() # We go in reverse-chronological order, so that we can identify rollback @@ -71,36 +78,119 @@ def get_relnotes_between(base, head): rolled_back_commits.add(m[1]) # The rollback commit itself is also skipped. continue - relnote = extract_relnotes(lines) + relnote = extract_relnotes(lines, is_major_release) if relnote is not None: relnotes.append(relnote) return relnotes +def get_label(issue_id): + """Get team-X label added to issue.""" + auth = subprocess.check_output( + "gsutil cat" + " gs://bazel-trusted-encrypted-secrets/github-trusted-token.enc |" + " gcloud kms decrypt --project bazel-public --location global" + " --keyring buildkite --key github-trusted-token --ciphertext-file" + " - --plaintext-file -", shell=True + ).decode("utf-8").strip().split("\n")[0] + headers = { + "Authorization": "Bearer " + auth, + "Accept": "application/vnd.github+json", + } + response = requests.get( + "https://api.github.com/repos/bazelbuild/bazel/issues/" + + issue_id + "/labels", headers=headers, + ) + for item in response.json(): + for key, value in item.items(): + if key == "name" and "team-" in value: + return value.strip() + return None + + +def get_categorized_relnotes(filtered_notes): + """Sort release notes by category.""" + categorized_relnotes = {} + for relnote in filtered_notes: + issue_id = re.search(r"\(\#[0-9]+\)$", relnote.strip().split()[-1]) + category = None + if issue_id: + category = get_label(re.sub(r"\(|\#|\)", "", issue_id.group(0).strip())) + + if category is None: + category = "General" + else: + category = re.sub("team-", "", category) + + try: + categorized_relnotes[category].append(relnote) + except KeyError: + categorized_relnotes[category] = [relnote] + + return dict(sorted(categorized_relnotes.items())) + + def get_external_authors_between(base, head): """Gets all external authors for commits between `base` and `head`.""" + + # Get all authors authors = git("log", f"{base}..{head}", "--format=%aN|%aE") - authors = set(author.partition("|")[0].rstrip() for author in authors - if not author.endswith("@google.com")) - return ", ".join(sorted(authors, key=str.casefold)) + authors = set( + author.partition("|")[0].rstrip() + for author in authors if not (author.endswith(("@google.com")))) + + # Get all co-authors + contributors = git( + "log", f"{base}..{head}", "--format=%(trailers:key=Co-authored-by)" + ) + + coauthors = [] + for coauthor in contributors: + if coauthor and not re.search("@google.com", coauthor): + coauthors.append( + " ".join(re.sub(r"Co-authored-by: |<.*?>", "", coauthor).split()) + ) + return ", ".join(sorted(authors.union(coauthors), key=str.casefold)) if __name__ == "__main__": - # Get the last stable release. - last_release = get_last_release() - print("last_release is", last_release) - git("fetch", "origin", f"refs/tags/{last_release}:refs/tags/{last_release}") + # Get last release and make sure it's consistent with current X.Y.Z release + # e.g. if current_release is 5.3.3, last_release should be 5.3.2 even if + # latest release is 6.1.1 + current_release = git("rev-parse", "--abbrev-ref", "HEAD")[0] + + if current_release.startswith("release-"): + current_release = re.sub(r"rc\d", "", current_release[len("release-"):]) + else: + try: + current_release = git("describe", "--tags")[0] + except Exception: # pylint: disable=broad-exception-caught + print("Error: Not a release branch.") + sys.exit(1) + + is_major = bool(re.fullmatch(r"\d+.0.0", current_release)) + + tags = [tag for tag in git("tag", "--sort=refname") if "pre" not in tag] + + # Get the baseline for RCs (before release tag is created) + if current_release not in tags: + tags.append(current_release) + + tags.sort() + last_release = tags[tags.index(current_release) - 1] # Assuming HEAD is on the current (to-be-released) release, find the merge # base with the last release so that we know which commits to generate notes # for. merge_base = git("merge-base", "HEAD", last_release)[0] - print("merge base with", last_release, "is", merge_base) + print("Baseline: ", merge_base) # Generate notes for all commits from last branch cut to HEAD, but filter out # any identical notes from the previous release branch. - cur_release_relnotes = get_relnotes_between(merge_base, "HEAD") - last_release_relnotes = set(get_relnotes_between(merge_base, last_release)) + cur_release_relnotes = get_relnotes_between(merge_base, "HEAD", is_major) + last_release_relnotes = set( + get_relnotes_between(merge_base, last_release, is_major) + ) filtered_relnotes = [ note for note in cur_release_relnotes if note not in last_release_relnotes ] @@ -108,13 +198,24 @@ def get_external_authors_between(base, head): # Reverse so that the notes are in chronological order. filtered_relnotes.reverse() print() - print() - for note in filtered_relnotes: - print("*", note) + print("Release Notes:") + + if len(sys.argv) >= 2 and sys.argv[1] == "sort": + print() + categorized_release_notes = get_categorized_relnotes(filtered_relnotes) + for label in categorized_release_notes: + print(label + ":") + for note in categorized_release_notes[label]: + print("+", note) + print() + else: + print() + for note in filtered_relnotes: + print("+", note) print() - print() + print("Acknowledgements:") external_authors = get_external_authors_between(merge_base, "HEAD") - print( - "This release contains contributions from many people at Google, " - f"as well as {external_authors}.") + print() + print("This release contains contributions from many people at Google" + + ("." if not external_authors else f", as well as {external_authors}.")) diff --git a/scripts/release/relnotes.sh b/scripts/release/relnotes.sh index 8e2986affcde82..9ad785a752eb49 100755 --- a/scripts/release/relnotes.sh +++ b/scripts/release/relnotes.sh @@ -270,50 +270,52 @@ function generate_release_message() { local release_name="$1" local branch="${2:-HEAD}" local delimiter="${3-}" - local baseline="$(get_release_baseline "${branch}")" - local cherrypicks="$(get_cherrypicks "${branch}" "${baseline}")" get_release_title "$release_name" echo - if [ -n "${delimiter}" ]; then - echo "${delimiter}" - fi - __create_revision_information $baseline $cherrypicks - if [ -n "${delimiter}" ]; then - echo "${delimiter}" - fi - - echo + if [[ "$(is_rolling_release)" -eq 0 ]]; then + if [ -n "${delimiter}" ]; then + echo "${delimiter}" + fi + python3 ${RELNOTES_SCRIPT_DIR}/relnotes.py + if [ -n "${delimiter}" ]; then + echo "${delimiter}" + fi + else + local baseline="$(get_release_baseline "${branch}")" + local cherrypicks="$(get_cherrypicks "${branch}" "${baseline}")" - # Generate the release notes - local tmpfile=$(mktemp --tmpdir relnotes-XXXXXXXX) - trap "rm -f ${tmpfile}" EXIT + if [ -n "${delimiter}" ]; then + echo "${delimiter}" + fi + __create_revision_information $baseline $cherrypicks + if [ -n "${delimiter}" ]; then + echo "${delimiter}" + fi - # Save the changelog so we compute the relnotes against HEAD. - git show master:CHANGELOG.md > "${tmpfile}" + echo - local relnotes="$(create_release_notes "${tmpfile}" "${baseline}" ${cherrypicks})" - echo "${relnotes}" > "${tmpfile}" + # Generate the release notes + local tmpfile=$(mktemp --tmpdir relnotes-XXXXXXXX) + trap "rm -f ${tmpfile}" EXIT - __release_note_processor "${tmpfile}" || return 1 - relnotes="$(cat ${tmpfile})" + # Save the changelog so we compute the relnotes against HEAD. + git show master:CHANGELOG.md > "${tmpfile}" - cat "${tmpfile}" -} + local relnotes="$(create_release_notes "${tmpfile}" "${baseline}" ${cherrypicks})" + echo "${relnotes}" > "${tmpfile}" -# Returns the release notes for the CHANGELOG.md taken from either from -# the notes for a release candidate/rolling release, or from the commit message for a -# full release. -function get_full_release_notes() { - local release_name="$(get_full_release_name "$@")" + __release_note_processor "${tmpfile}" || return 1 + relnotes="$(cat ${tmpfile})" - if [[ "${release_name}" =~ rc[0-9]+$ ]] || [[ "$(is_rolling_release)" -eq 1 ]]; then - # Release candidate or rolling release -> generate from the notes - generate_release_message "${release_name}" "$@" - else - # Full LTS release -> return the commit message - git_commit_msg "$@" + cat "${tmpfile}" fi } +# Returns the release notes for the CHANGELOG.md for all releases - +# release candidate, full release, and rolling release. +function get_full_release_notes() { + local release_name="$(get_full_release_name "$@")" + generate_release_message "${release_name}" "$@" +} \ No newline at end of file diff --git a/site/en/_book.yaml b/site/en/_book.yaml index 3fa7c88d5d341b..1715cc2d31cd41 100644 --- a/site/en/_book.yaml +++ b/site/en/_book.yaml @@ -95,12 +95,12 @@ upper_tabs: other: - name: Releases contents: - - title: Overview + - title: Release model path: /release/ - - title: Release versioning - path: /release/versioning - title: Backward compatibility path: /release/backward-compatibility + - title: Rule compatibility + path: /release/rule-compatibility - name: Basics contents: - heading: Getting started with BUILD files @@ -130,6 +130,8 @@ upper_tabs: path: /external/registry - title: Module extensions path: /external/extension + - title: Bzlmod migration guide + path: /external/migration - title: Advanced topics path: /external/advanced - heading: Querying your build @@ -150,8 +152,6 @@ upper_tabs: path: /configure/attributes - title: Integrating with C++ rules path: /configure/integrate-cpp - - title: Implementing toolchain resolution - path: /configure/toolchain-resolution - title: Code coverage with Bazel path: /configure/coverage - heading: Optimizing Bazel @@ -168,6 +168,8 @@ upper_tabs: path: /advanced/performance/json-trace-profile - title: Optimize memory path: /advanced/performance/memory + - title: Optimize build iteration speed + path: /advanced/performance/iteration-speed - name: Remote execution contents: - heading: Remote build execution (RBE) @@ -270,8 +272,12 @@ upper_tabs: path: /extending/repo - title: Configuring path: /extending/config - - title: Platforms and toolchains + - title: Platforms path: /extending/platforms + - title: Toolchains + path: /extending/toolchains + - title: Execution groups + path: /extending/exec-groups - name: Writing rules contents: - title: Creating a rule @@ -307,12 +313,6 @@ upper_tabs: - title: Document rules with Stardoc path: https://github.com/bazelbuild/stardoc status: external - - name: Design docs - contents: - - title: Execution groups - path: /extending/exec-groups - - title: Toolchains - path: /extending/toolchains - name: APIs contents: - title: Build file API diff --git a/site/en/about/intro.md b/site/en/about/intro.md index 5dd56e9e14280e..abf545dacbd5dc 100644 --- a/site/en/about/intro.md +++ b/site/en/about/intro.md @@ -108,5 +108,5 @@ directly to the Bazel tutorials: * [Tutorial: Build a C++ Project](/start/cpp) * [Tutorial: Build a Java Project](/start/java) -* [Tutorial: Build an Android Application](/start/android-app ) -* [Tutorial: Build an iOS Application](/start/ios-app)) +* [Tutorial: Build an Android Application](/start/android-app) +* [Tutorial: Build an iOS Application](/start/ios-app) diff --git a/site/en/advanced/performance/iteration-speed.md b/site/en/advanced/performance/iteration-speed.md new file mode 100644 index 00000000000000..1b4fcc7aba5f3d --- /dev/null +++ b/site/en/advanced/performance/iteration-speed.md @@ -0,0 +1,92 @@ +Project: /_project.yaml +Book: /_book.yaml + + +# Optimize Iteration Speed + +{% include "_buttons.html" %} + +This page describes how to optimize Bazel's build performance when running Bazel +repeatedly. + +## Bazel's Runtime State {:#bazel-runtime-state} + +A Bazel invocation involves several interacting parts. + +* The `bazel` command line interface (CLI) is the user-facing front-end tool + and receives commands from the user. + +* The CLI tool starts a [*Bazel server*](https://bazel.build/run/client-server) + for each distinct [output base](https://bazel.build/remote/output-directories). + The Bazel server is generally persistent, but will shut down after some idle + time so as to not waste resources. + +* The Bazel server performs the loading and analysis steps for a given command + (`build`, `run`, `cquery`, etc.), in which it constructs the necessary parts + of the build graph in memory. The resulting data structures are retained in + the Bazel server as part of the *analysis cache*. + +* The Bazel server can also perform the action execution, or it can send + actions off for remote execution if it is set up to do so. The results of + action executions are also cached, namely in the *action cache* (or + *execution cache*, which may be either local or remote, and it may be shared + among Bazel servers). + +* The result of the Bazel invocation is made available in the output tree. + +## Running Bazel Iteratively {:#run-iteratively} + +In a typical developer workflow, it is common to build (or run) a piece of code +repeatedly, often at a very high frequency (e.g. to resolve some compilation +error or investigate a failing test). In this situation, it is important that +repeated invocations of `bazel` have as little overhead as possible relative to +the underlying, repeated action (e.g. invoking a compiler, or executing a test). + +With this in mind, we take another look at Bazel's runtime state: + +The analysis cache is a critical piece of data. A significant amount of time can +be spent just on the loading and analysis phases of a cold run (i.e. a run just +after the Bazel server was started or when the analysis cache was discarded). +For a single, successful cold build (e.g. for a production release) this cost is +bearable, but for repeatedly building the same target it is important that this +cost be amortized and not repeated on each invocation. + +The analysis cache is rather volatile. First off, it is part of the in-process +state of the Bazel server, so losing the server loses the cache. But the cache +is also *invalidated* very easily: for example, many `bazel` command line flags +cause the cache to be discarded. This is because many flags affect the build +graph (e.g. because of +[configurable attributes](https://bazel.build/configure/attributes)). Some flag +changes can also cause the Bazel server to be restarted (e.g. changing +[startup options](https://bazel.build/docs/user-manual#startup-options)). + +A good execution cache is also valuable for build performance. An execution +cache can be kept locally +[on disk](https://bazel.build/remote/caching#disk-cache), or +[remotely](https://bazel.build/remote/caching). The cache can be shared among +Bazel servers, and indeed among developers. + +## Avoid discarding the analysis cache {:#avoid-discarding-cache} + +Bazel will print a warning if either the analysis cache was discarded or the +server was restarted. Either of these should be avoided during iterative use: + +* Be mindful of changing `bazel` flags in the middle of an iterative + workflow. For example, mixing a `bazel build -c opt` with a `bazel cquery` + causes each command to discard the analysis cache of the other. In general, + try to use a fixed set of flags for the duration of a particular workflow. + +* Losing the Bazel server loses the analysis cache. The Bazel server has a + [configurable](https://bazel.build/docs/user-manual#max-idle-secs) idle + time, after which it shuts down. You can configure this time via your + bazelrc file to suit your needs. The server also restarted when startup + flags change, so, again, avoid changing those flags if possible. + +* Beware that the Bazel server is killed if you press + Ctrl-C repeatedly while Bazel is running. It is tempting to try to save time + by interrupting a running build that is no longer needed, but only press + Ctrl-C once to request a graceful end of the current invocation. + +* If you want to use multiple sets of flags from the same workspace, you can + use multiple, distinct output bases, switched with the `--output_base` + flag. Each output base gets its own Bazel server. diff --git a/site/en/community/users.md b/site/en/community/users.md index d41ada8a28ecab..4405f0c0c2847c 100644 --- a/site/en/community/users.md +++ b/site/en/community/users.md @@ -501,7 +501,7 @@ Java and Android. DAML is a smart contract language for building future-proof distributed applications on a safe, privacy-aware runtime. -### [Deepmind Lab](https://github.com/deepmind/lab){: .external} +### [DeepMind Lab](https://github.com/deepmind/lab){: .external} A customisable 3D platform for agent-based AI research. diff --git a/site/en/concepts/build-files.md b/site/en/concepts/build-files.md index 9bcc8d29d9af16..77d88c741e10f2 100644 --- a/site/en/concepts/build-files.md +++ b/site/en/concepts/build-files.md @@ -10,7 +10,14 @@ build dependency graph abstractly. This section describes the concrete syntax used to define a package. By definition, every package contains a `BUILD` file, which is a short -program. `BUILD` files are evaluated using an imperative language, +program. + +Note: The `BUILD` file can be named either `BUILD` or `BUILD.bazel`. If both +files exist, `BUILD.bazel` takes precedence over `BUILD`. +For simplicity's sake, the documentation refers to these files simply as `BUILD` +files. + +`BUILD` files are evaluated using an imperative language, [Starlark](https://github.com/bazelbuild/starlark/){: .external}. They are interpreted as a sequential list of statements. diff --git a/site/en/concepts/build-ref.md b/site/en/concepts/build-ref.md index 0849177ec9916a..c9b87b38112116 100644 --- a/site/en/concepts/build-ref.md +++ b/site/en/concepts/build-ref.md @@ -49,11 +49,11 @@ The primary unit of code organization in a repository is the _package_. A package is a collection of related files and a specification of how they can be used to produce output artifacts. -A package is defined as a directory containing a file named `BUILD` (or -`BUILD.bazel`). A package includes all files in its directory, plus all -subdirectories beneath it, except those which themselves contain a `BUILD` file. -From this definition, no file or directory may be a part of two different -packages. +A package is defined as a directory containing a +[`BUILD` file](/concepts/build-files) named either `BUILD` or `BUILD.bazel`. A +package includes all files in its directory, plus all subdirectories beneath it, +except those which themselves contain a `BUILD` file. From this definition, no +file or directory may be a part of two different packages. For example, in the following directory tree there are two packages, `my/app`, and the subpackage `my/app/tests`. Note that `my/app/data` is not a package, but diff --git a/site/en/configure/attributes.md b/site/en/configure/attributes.md index 4001ad805f7b3e..d4e603fea5338b 100644 --- a/site/en/configure/attributes.md +++ b/site/en/configure/attributes.md @@ -747,7 +747,7 @@ my_custom_bazel_rule( name = "happy_rule", my_config_string = select({ "//tools/target_cpu:x86": "first string", - "//tools/target_cpu:ppc": "second string", + "//third_party/bazel_platforms/cpu:ppc": "second string", }), ) @@ -760,7 +760,7 @@ my_custom_bazel_macro( name = "sad_macro", my_config_string = select({ "//tools/target_cpu:x86": "first string", - "//tools/target_cpu:ppc": "other string", + "//third_party/bazel_platforms/cpu:ppc": "other string", }), ) ``` @@ -842,7 +842,7 @@ load("//myapp:defs.bzl", "my_boolean_macro") my_boolean_macro( boolval = select({ "//tools/target_cpu:x86": True, - "//tools/target_cpu:ppc": False, + "//third_party/bazel_platforms/cpu:ppc": False, }), ) diff --git a/site/en/configure/toolchain-resolution.md b/site/en/configure/toolchain-resolution.md deleted file mode 100644 index 2713c2105932e7..00000000000000 --- a/site/en/configure/toolchain-resolution.md +++ /dev/null @@ -1,56 +0,0 @@ -Project: /_project.yaml -Book: /_book.yaml - -# Toolchain Resolution Implementation Details - -{% include "_buttons.html" %} - -**Note:** This section is intended for Bazel developers, and is not needed by -rule authors. - -Several SkyFunction classes implement the [toolchain resolution](/extending/toolchains) process: - -1. [`RegisteredToolchainsFunction`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java) and - [`RegisteredExecutionPlatformsFunction`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java) - find available toolchains and execution platforms, based on the current - configuration and WORKSPACE file. - -1. [`SingleToolchainResolutionFunction`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java) - resolves a single toolchain type for every execution platform. That is, for - every execution platform it finds the best registered toolchain to use based - on the following criteria: - - 1. Make sure the toolchain and target platform are compatible, by checking - the `target_compatible_with` attribute. - 1. Make sure the toolchain and execution platform are compatible, by - checking the `exec_compatible_with` attribute. - 1. If multiple toolchains are left, choose the highest-priority one (the - one that was registered first). - -1. [`ToolchainResolutionFunction`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java) calls - `SingleToolchainResolutionFunction` for each requested toolchain type, and - then determines the best execution platform to use. - - 1. First, remove any execution platform that does not have a valid - toolchain for each requested toolchain type. - 2. If multiple execution platforms are left, choose the highest-priority - one (the one that was registered first). - 1. If the execution platform is already set by the toolchain - transition, it will be selected first as described below. - -As discussed in [Toolchains and Configurations](/extending/toolchains#toolchains_and_configurations), -the dependency from a target to a toolchain uses a special configuration that -forces the execution platform to be the same for both. Despite the name -"toolchain transition", this is not implemented as a configuration -transition, but instead as a special subclass of -[`ConfiguredTargetKey`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java), called -[`ToolchainDependencyConfiguredTargetKey`](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java;bpv=1;bpt=1;l=164?ss=bazel&q=ConfiguredTargetKey&gsn=ToolchainDependencyConfiguredTargetKey&gs=kythe%3A%2F%2Fgithub.com%2Fbazelbuild%2Fbazel%3Flang%3Djava%3Fpath%3Dcom.google.devtools.build.lib.skyframe.ConfiguredTargetKey.ToolchainDependencyConfiguredTargetKey%2336c7e68f8cd5ea0b5a21b3769e63e6b2d489b9ca8c6f79798839e7f40cf2a19e). -In addition to the other data in `ConfiguredTargetKey`, this subclass also holds -the label of the execution platform. When `ToolchainResolutionFunction` is -considering which execution platform to use, if the forced execution platform -from the `ToolchainDependencyConfiguredTargetKey` is valid, it will be used even -if it is not the highest-priority. - -**Note:** If the forced execution platform is not valid (because there are no -valid toolchains, or because of execution constraints from the rule or target), -then the highest-priority valid execution platform will be used instead. diff --git a/site/en/contribute/codebase.md b/site/en/contribute/codebase.md index a5b97e45f7a661..3189a5b587a670 100644 --- a/site/en/contribute/codebase.md +++ b/site/en/contribute/codebase.md @@ -1,28 +1,28 @@ Project: /_project.yaml Book: /_book.yaml -# The Bazel Code Base +# The Bazel codebase {% include "_buttons.html" %} -This document is a description of the code base and how Bazel is structured. It +This document is a description of the codebase and how Bazel is structured. It is intended for people willing to contribute to Bazel, not for end-users. ## Introduction {:#introduction} -The code base of Bazel is large (~350KLOC production code and ~260 KLOC test +The codebase of Bazel is large (~350KLOC production code and ~260 KLOC test code) and no one is familiar with the whole landscape: everyone knows their particular valley very well, but few know what lies over the hills in every direction. In order for people midway upon the journey not to find themselves within a forest dark with the straightforward pathway being lost, this document tries to -give an overview of the code base so that it's easier to get started with +give an overview of the codebase so that it's easier to get started with working on it. The public version of the source code of Bazel lives on GitHub at [github.com/bazelbuild/bazel](http://github.com/bazelbuild/bazel). This is not -the “source of truth”; it’s derived from a Google-internal source tree that +the "source of truth"; it's derived from a Google-internal source tree that contains additional functionality that is not useful outside Google. The long-term goal is to make GitHub the source of truth. @@ -79,7 +79,7 @@ At the end of a command, the Bazel server transmits the exit code the client should return. An interesting wrinkle is the implementation of `bazel run`: the job of this command is to run something Bazel just built, but it can't do that from the server process because it doesn't have a terminal. So instead it tells -the client what binary it should ujexec() and with what arguments. +the client what binary it should `ujexec()` and with what arguments. When one presses Ctrl-C, the client translates it to a Cancel call on the gRPC connection, which tries to terminate the command as soon as possible. After the @@ -181,10 +181,10 @@ through `RuleContext.getFragment()` in Java or `ctx.fragments` in Starlark). Some of them (for example, whether to do C++ include scanning or not) are read in the execution phase, but that always requires explicit plumbing since `BuildConfiguration` is not available then. For more information, see the -section “Configurations”. +section "Configurations". **WARNING:** We like to pretend that `OptionsBase` instances are immutable and -use them that way (such as as part of `SkyKeys`). This is not the case and +use them that way (such as a part of `SkyKeys`). This is not the case and modifying them is a really good way to break Bazel in subtle ways that are hard to debug. Unfortunately, making them actually immutable is a large endeavor. (Modifying a `FragmentOptions` immediately after construction before anyone else @@ -194,7 +194,7 @@ called on it is okay.) Bazel learns about option classes in the following ways: 1. Some are hard-wired into Bazel (`CommonCommandOptions`) -2. From the @Command annotation on each Bazel command +2. From the `@Command` annotation on each Bazel command 3. From `ConfiguredRuleClassProvider` (these are command line options related to individual programming languages) 4. Starlark rules can also define their own options (see @@ -223,8 +223,8 @@ A "repository" is a source tree on which a developer works; it usually represents a single project. Bazel's ancestor, Blaze, operated on a monorepo, that is, a single source tree that contains all source code used to run the build. Bazel, in contrast, supports projects whose source code spans multiple -repositories. The repository from which Bazel is invoked is called the “main -repository”, the others are called “external repositories”. +repositories. The repository from which Bazel is invoked is called the "main +repository", the others are called "external repositories". A repository is marked by a file called `WORKSPACE` (or `WORKSPACE.bazel`) in its root directory. This file contains information that is "global" to the whole @@ -237,8 +237,8 @@ Code of external repositories is symlinked or downloaded under `$OUTPUT_BASE/external`. When running the build, the whole source tree needs to be pieced together; this -is done by SymlinkForest, which symlinks every package in the main repository to -`$EXECROOT` and every external repository to either `$EXECROOT/external` or +is done by `SymlinkForest`, which symlinks every package in the main repository +to `$EXECROOT` and every external repository to either `$EXECROOT/external` or `$EXECROOT/..` (the former of course makes it impossible to have a package called `external` in the main repository; that's why we are migrating away from it) @@ -248,7 +248,7 @@ it) Every repository is composed of packages, a collection of related files and a specification of the dependencies. These are specified by a file called `BUILD` or `BUILD.bazel`. If both exist, Bazel prefers `BUILD.bazel`; the reason -why `BUILD` files are still accepted is that Bazel’s ancestor, Blaze, used this +why `BUILD` files are still accepted is that Bazel's ancestor, Blaze, used this file name. However, it turned out to be a commonly used path segment, especially on Windows, where file names are case-insensitive. @@ -274,7 +274,7 @@ Globbing is implemented in the following classes: * `LegacyGlobber`, a fast and blissfully Skyframe-unaware globber * `SkyframeHybridGlobber`, a version that uses Skyframe and reverts back to - the legacy globber in order to avoid “Skyframe restarts” (described below) + the legacy globber in order to avoid "Skyframe restarts" (described below) The `Package` class itself contains some members that are exclusively used to parse the WORKSPACE file and which do not make sense for real packages. This is @@ -296,7 +296,7 @@ Packages are composed of targets, which have the following types: 1. **Files:** things that are either the input or the output of the build. In Bazel parlance, we call them _artifacts_ (discussed elsewhere). Not all - files created during the build are targets; it’s common for an output of + files created during the build are targets; it's common for an output of Bazel not to have an associated label. 2. **Rules:** these describe steps to derive its outputs from its inputs. They are generally associated with a programming language (such as `cc_library`, @@ -319,7 +319,7 @@ can be omitted: A kind of a rule (such as "C++ library") is called a "rule class". Rule classes may be implemented either in Starlark (the `rule()` function) or in Java (so called -“native rules”, type `RuleClass`). In the long term, every language-specific +"native rules", type `RuleClass`). In the long term, every language-specific rule will be implemented in Starlark, but some legacy rule families (such as Java or C++) are still in Java for the time being. @@ -335,10 +335,10 @@ Rule classes contain information such as: 3. The implementation of the rule 4. The transitive info providers the rule "usually" creates -**Terminology note:** In the code base, we often use “Rule” to mean the target +**Terminology note:** In the codebase, we often use "Rule" to mean the target created by a rule class. But in Starlark and in user-facing documentation, -“Rule” should be used exclusively to refer to the rule class itself; the target -is just a “target”. Also note that despite `RuleClass` having “class” in its +"Rule" should be used exclusively to refer to the rule class itself; the target +is just a "target". Also note that despite `RuleClass` having "class" in its name, there is no Java inheritance relationship between a rule class and targets of that type. @@ -359,7 +359,7 @@ From this it follows that everything that is computed within Skyframe (such as configured targets) must also be immutable. The most convenient way to observe the Skyframe graph is to run `bazel dump ---skyframe=detailed`, which dumps the graph, one `SkyValue` per line. It's best +--skyframe=deps`, which dumps the graph, one `SkyValue` per line. It's best to do it for tiny builds, since it can get pretty large. Skyframe lives in the `com.google.devtools.build.skyframe` package. The @@ -641,7 +641,7 @@ described for users of Bazel [here](/extending/aspects). A good motivating example is protocol buffers: a `proto_library` rule should not know about any particular language, but building the implementation of a protocol -buffer message (the “basic unit” of protocol buffers) in any programming +buffer message (the "basic unit" of protocol buffers) in any programming language should be coupled to the `proto_library` rule so that if two targets in the same language depend on the same protocol buffer, it gets built only once. @@ -1055,7 +1055,7 @@ action that emitted it. The action is described as: input files (such as for `FileWriteAction`, it's the checksum of the data that's written) -There is also a highly experimental “top-down action cache” that is still under +There is also a highly experimental "top-down action cache" that is still under development, which uses transitive hashes to avoid going to the cache as many times. diff --git a/site/en/contribute/index.md b/site/en/contribute/index.md index 8eb018a758e44c..e1d729c3731a6c 100644 --- a/site/en/contribute/index.md +++ b/site/en/contribute/index.md @@ -46,7 +46,7 @@ You can contribute to the Bazel ecosystem by: Before making a change, [create a GitHub issue](http://github.com/bazelbuild/bazel/issues){: .external} -or email [bazel-dev@](mailto:bazel-dev@googlegroups.com){: .external}. +or email [bazel-discuss@](mailto:bazel-discuss@googlegroups.com){: .external}. The most helpful contributions fix bugs or add features (as opposed to stylistic, refactoring, or "cleanup" changes). Your change should diff --git a/site/en/contribute/patch-acceptance.md b/site/en/contribute/patch-acceptance.md index 34b1b8faf46b8d..1a21fb2abf1553 100644 --- a/site/en/contribute/patch-acceptance.md +++ b/site/en/contribute/patch-acceptance.md @@ -30,11 +30,13 @@ code base. 1. A Bazel maintainer should assign you a reviewer within two business days (excluding holidays in the USA and Germany). If you aren't assigned a reviewer in that time, you can request one by emailing - [bazel-dev@googlegroups.com](mailto:bazel-dev@googlegroups.com){: .external}. + [bazel-discuss@googlegroups.com] + (mailto:bazel-discuss@googlegroups.com){: .external}. 1. Work with the reviewer to complete a code review. For each change, create a new commit and push it to make changes to your pull request. If the review takes too long (for instance, if the reviewer is unresponsive), send an email to - [bazel-dev@googlegroups.com](mailto:bazel-dev@googlegroups.com){: .external}. + [bazel-discuss@googlegroups.com] + (mailto:bazel-discuss@googlegroups.com){: .external}. 1. After your review is complete, a Bazel maintainer applies your patch to Google's internal version control system. diff --git a/site/en/contribute/policy.md b/site/en/contribute/policy.md index 9b2ac23449c8dd..b4ae0feb6981ed 100644 --- a/site/en/contribute/policy.md +++ b/site/en/contribute/policy.md @@ -1,6 +1,5 @@ Project: /_project.yaml Book: /_book.yaml - translation: human page_type: lcat diff --git a/site/en/contribute/support.md b/site/en/contribute/support.md deleted file mode 100644 index 32cb7e37ff3544..00000000000000 --- a/site/en/contribute/support.md +++ /dev/null @@ -1,21 +0,0 @@ -Project: /_project.yaml -Book: /_book.yaml - -# Support Policy - -{% include "_buttons.html" %} - -The Bazel team generally avoids making backwards-incompatible changes. However, -these changes are sometimes necessary to fix bugs, make improvements (such as -improving performance or usability) to the system, or to lock down APIs that -are known to be brittle. - -Major changes are announced in advance on the -[bazel-discuss](https://groups.google.com/forum/#!forum/bazel-discuss){: .external} mailing -list. Both undocumented features (attributes, rules, "Make" variables, and -flags) and documented features that are marked *experimental* are subject to -change at any time without prior notice. - -Report any bugs or regressions you find on -[GitHub](https://github.com/bazelbuild/bazel/issues){: .external}. The repository maintainers -make an effort to triage reported issues within 2 business days. diff --git a/site/en/docs/_index.yaml b/site/en/docs/_index.yaml index 25855866d94dfa..177e2b0862e945 100644 --- a/site/en/docs/_index.yaml +++ b/site/en/docs/_index.yaml @@ -46,15 +46,15 @@ landing_page: background: white heading: Release description: > - Learn about Bazel's version policy, read release notes, and browse older documentation. + Learn about Bazel's release model, latest releases, and compatibility policies. items_across: 4 items: - - heading: Release policy + - heading: Release model path: /release/ - - heading: Release versioning - path: /release/versioning - heading: Backward compatibility path: /release/backward-compatibility + - heading: Rule compatibility + path: /release/rule-compatibility # Basics row - options: @@ -111,8 +111,6 @@ landing_page: path: /configure/attributes - heading: Integrating with C++ rules path: /configure/integrate-cpp - - heading: Implementing toolchain resolution - path: /configure/toolchain-resolution - heading: Code coverage with Bazel path: /configure/coverage - heading: "Optimizing Bazel: Best practices" @@ -127,6 +125,8 @@ landing_page: path: /advanced/performance/json-trace-profile - heading: Optimize memory path: /advanced/performance/memory + - heading: Optimize build iteration speed + path: /advanced/performance/iteration-speed # Remote distrubution row - options: diff --git a/site/en/docs/configurable-attributes.md b/site/en/docs/configurable-attributes.md index 7e7eb9b619a831..53c69634750d0f 100644 --- a/site/en/docs/configurable-attributes.md +++ b/site/en/docs/configurable-attributes.md @@ -747,7 +747,7 @@ my_custom_bazel_rule( name = "happy_rule", my_config_string = select({ "//tools/target_cpu:x86": "first string", - "//tools/target_cpu:ppc": "second string", + "//third_party/bazel_platforms/cpu:ppc": "second string", }), ) @@ -760,7 +760,7 @@ my_custom_bazel_macro( name = "sad_macro", my_config_string = select({ "//tools/target_cpu:x86": "first string", - "//tools/target_cpu:ppc": "other string", + "//third_party/bazel_platforms/cpu:ppc": "other string", }), ) ``` @@ -842,7 +842,7 @@ load("//myapp:defs.bzl", "my_boolean_macro") my_boolean_macro( boolval = select({ "//tools/target_cpu:x86": True, - "//tools/target_cpu:ppc": False, + "//third_party/bazel_platforms/cpu:ppc": False, }), ) diff --git a/site/en/docs/images/roadmap.png b/site/en/docs/images/roadmap.png deleted file mode 100644 index 9ca146607c5415..00000000000000 Binary files a/site/en/docs/images/roadmap.png and /dev/null differ diff --git a/site/en/docs/user-manual.md b/site/en/docs/user-manual.md index a3953a487bf2ec..f7d6730c969233 100644 --- a/site/en/docs/user-manual.md +++ b/site/en/docs/user-manual.md @@ -1266,6 +1266,8 @@ The contract is: Bazel always outputs the following volatile keys: * `BUILD_TIMESTAMP`: time of the build in seconds since the Unix Epoch (the value of `System.currentTimeMillis()` divided by a thousand) + * `FORMATTED_DATE`: time of the build Formatted as + `yyyy MMM d HH mm ss EEE`(for example 2023 Jun 2 01 44 29 Fri) in UTC. On Linux/macOS you can pass `--workspace_status_command=/bin/true` to disable retrieving workspace status, because `true` does nothing, successfully (exits diff --git a/site/en/extending/exec-groups.md b/site/en/extending/exec-groups.md index 80492e1fa51057..d1d904cdddd950 100644 --- a/site/en/extending/exec-groups.md +++ b/site/en/extending/exec-groups.md @@ -62,48 +62,6 @@ built. As on native rules, the `test` execution group is present by default on Starlark test rules. -### Execution group inheritance {:#exec-group-inheritance} - -In addition to defining its own constraints and toolchains, a new execution -group can declare that it wants to inherit from the rule's default execution -group, by passing the `copy_from_rule = True` parameter. It is an error to set -`copy_from_rule` to true and to also pass `exec_compatible_with` or -`toolchains`. - -An execution group that inherits from the default execution group copies -constraints, toolchains, and execution properties from the default. This -includes constraints and execution properties set on the target level, not just -those specified by the rule itself. In other words, given the following: - -```python -# foo.bzl -my_rule = rule( - _impl, - exec_groups = { - “copied”: exec_group( - copy_from_rule = True, - # This will inherit exec_compatible_with and toolchains. - # Setting them here directly would be an error, however. - ), - }, - toolchains = ["//foo_tools:toolchain_type"], - exec_compatible_with = ["@platforms//os:linux"], -) - -# BUILD - -my_rule( - name = "demo", - exec_compatible_with = [":local_constraint"], -) -``` - -The `copied` execution group for the configured target `demo` will include all -of: -- `//fool_tools:toolchain_type` -- `@platforms//os:linux` -- `:local_constraint` - ## Accessing execution groups {:#accessing-exec-groups} In the rule implementation, you can declare that actions should be run on the @@ -175,36 +133,6 @@ The following execution groups are available for actions defined by native rules * `test`: Test runner actions. * `cpp_link`: C++ linking actions. -### Creating exec groups to set exec properties {:#creating-exec-groups-for-exec-properties} - -Sometimes you want to use an exec group to give specific actions different exec -properties but don't actually want different toolchains or constraints than the -rule. For these situations, you can create exec groups using the `copy_from_rule` -parameter: - -```python -# foo.bzl - -# Creating an exec group with `copy_from_rule=True` is the same as explicitly -# setting the exec group's toolchains and constraints to the same values as the -# rule's respective parameters. -my_rule = rule( - _impl, - exec_compatible_with = ["@platforms//os:linux"], - toolchains = ["//foo:toolchain_type"], - exec_groups = { - # The following two groups have the same toolchains and constraints: - “foo”: exec_group(copy_from_rule = True), - "bar": exec_group( - exec_compatible_with = ["@platforms//os:linux"], - toolchains = ["//foo:toolchain_type"], - ), - }, -) - -# -``` - ### Execution groups and platform execution properties {:#platform-execution-properties} It is possible to define `exec_properties` for arbitrary execution groups on diff --git a/site/en/extending/rules.md b/site/en/extending/rules.md index e4f5ece6c00b5c..81b0f1e768dac9 100644 --- a/site/en/extending/rules.md +++ b/site/en/extending/rules.md @@ -884,7 +884,8 @@ need to be different for some reason, you can specify the `root_symlinks` or `symlinks` arguments. The `root_symlinks` is a dictionary mapping paths to files, where the paths are relative to the root of the runfiles directory. The `symlinks` dictionary is the same, but paths are implicitly prefixed with the -name of the workspace. +name of the main workspace (*not* the name of the repository containing the +current target). ```python ... @@ -979,7 +980,7 @@ non-tool [dependency attribute](#dependency_attributes) that doesn't set [`cfg`](#configuration) to `"host"` or `"exec"` in the attribute schema) in `dependency_attributes`. (This isn't ideal behavior, since it puts attributes like `srcs` in `dependency_attributes` instead of `source_attributes`, but it -avoids the need for explcit coverage configuration for all rules in the +avoids the need for explicit coverage configuration for all rules in the dependency chain.) ### Validation Actions diff --git a/site/en/external/migration.md b/site/en/external/migration.md new file mode 100644 index 00000000000000..de9a5ba65155ee --- /dev/null +++ b/site/en/external/migration.md @@ -0,0 +1,803 @@ +Project: /_project.yaml +Book: /_book.yaml +keywords: bzlmod + +# Bzlmod Migration Guide + +{% include "_buttons.html" %} + +Due to the [shortcomings of +WORKSPACE](/external/overview#workspace-shortcomings), Bzlmod is going to +replace the legacy WORKSPACE system in future Bazel releases. This guide helps +you migrate your project to Bzlmod and drop WORKSPACE for fetching external +dependencies. + +## WORKSPACE vs Bzlmod {:#workspace-vs-bzlmod} + +Bazel's WORKSPACE and Bzlmod offer similar features with different syntax. This +section explains how to migrate from specific WORKSPACE functionalities to +Bzlmod. + +### Define the root of a Bazel workspace {:#define-root} + +The WORKSPACE file marks the source root of a Bazel project, this responsibility +is replaced by MODULE.bazel in Bazel version 6.3 and later. With Bazel version +prior to 6.3, there should still be a `WORKSPACE` or `WORKSPACE.bazel` file at +your workspace root, maybe with comments like: + +* **WORKSPACE** + + ```python + # This file marks the root of the Bazel workspace. + # See MODULE.bazel for external dependencies setup. + ``` + +### Specify repository name for your workspace {:#specify-repo-name} + +* **WORKSPACE** + + The [`workspace`](/rules/lib/globals/workspace#workspace) function is used + to specify a repository name for your workspace. This allows a target + `//foo:bar` in the workspace to be referenced as `@//foo:bar`. If not specified, the default repository name for your + workspace is `__main__`. + + ```python + ## WORKSPACE + workspace(name = "com_foo_bar") + ``` + +* **Bzlmod** + + It's recommended to reference targets in the same workspace with the + `//foo:bar` syntax without `@`. But if you do need the old syntax + , you can use the module name specified by the + [`module`](/rules/lib/globals/module#module) function as the repository + name. If the module name is different from the needed repository name, you + can use `repo_name` attribute of the + [`module`](/rules/lib/globals/module#module) function to override the + repository name. + + ```python + ## MODULE.bazel + module( + name = "bar", + repo_name = "com_foo_bar", + ) + ``` + +### Fetch external dependencies as Bazel modules {:#fetch-bazel-modules} + +If your dependency is a Bazel project, you should be able to depend on it as a +Bazel module when it also adopts Bzlmod. + +* **WORKSPACE** + + With WORKSPACE, it's common to use the + [`http_archive`](/rules/lib/repo/http#http_archive) or + [`git_repository`](/rules/lib/repo/git#git_repository) repository rules to + download the sources of the Bazel project. + + ```python + ## WORKSPACE + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + + http_archive( + name = "bazel_skylib", + urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.2/bazel-skylib-1.4.2.tar.gz"], + sha256 = "66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa", + ) + load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") + bazel_skylib_workspace() + + http_archive( + name = "rules_java", + urls = ["https://github.com/bazelbuild/rules_java/releases/download/6.1.1/rules_java-6.1.1.tar.gz"], + sha256 = "76402a50ae6859d50bd7aed8c1b8ef09dae5c1035bb3ca7d276f7f3ce659818a", + ) + load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") + rules_java_dependencies() + rules_java_toolchains() + ``` + + As you can see, it's a common pattern that users need to load transitive + dependencies from a macro of the dependency. Assume both `bazel_skylib` and + `rules_java` depends on `platoform`, the exact version of the `platform` + dependency is determined by the order of the macros. + +* **Bzlmod** + + With Bzlmod, as long as the your dependency is available in [Bazel Central + Registry](https://registry.bazel.build) or your custom [Bazel + registry](/external/registry), you can simply depend on it with a + [`bazel_dep`](/rules/lib/globals/module#bazel_dep) directive. + + ```python + ## MODULE.bazel + bazel_dep(name = "bazel_skylib", version = "1.4.2") + bazel_dep(name = "rules_java", version = "6.1.1") + ``` + + Bzlmod resolves Bazel module dependencies transitively using the + [MVS](https://research.swtch.com/vgo-mvs) algorithm. Therefore, the maximal + required version of `platform` is selected automatically. + +### Override a dependency as a Bazel module{:#override-modules} + +As the root module, you can override Bazel module dependencies in different +ways. + +Please read the [overrides](/external/module#overrides) section for more +information. + +You can find some example usages in the +[examples][override-examples] +repository. + +[override-examples]: https://github.com/bazelbuild/examples/blob/main/bzlmod/02-override_bazel_module + +### Fetch external dependencies with module extensions{:#fetch-deps-module-extensions} + +If your dependency is not a Bazel project or not yet available in any Bazel +registry, you can introduce it using [module extensions](/external/extension). + +* **WORKSPACE** + + Download a file using the [`http_file`](/rules/lib/repo/http#http_file) + repository rule. + + ```python + ## WORKSPACE + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") + + http_file( + name = "data_file", + url = "http://example.com/file", + sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + ) + ``` + +* **Bzlmod** + + With Bzlmod, you have to move the definition into a `.bzl` file, which also + lets you share the definition between WORKSPACE and Bzlmod during the + migration period. + + ```python + ## repositories.bzl + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") + def my_data_dependency(): + http_file( + name = "data_file", + url = "http://example.com/file", + sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + ) + ``` + + Implement a module extension to load the dependencies macro. You can define + it in the same `.bzl` file of the macro, but to keep compatibility with + older Bazel versions, it's better to define it in a separate `.bzl` file. + + ```python + ## extensions.bzl + load("//:repositories.bzl", "my_data_dependency") + def _non_module_dependencies_impl(_ctx): + my_data_dependency() + + non_module_dependencies = module_extension( + implementation = _non_module_dependencies_impl, + ) + ``` + + To make the repository visible to the root project, you should declare the + usages of the module extension and the repository in the MODULE.bazel file. + + ```python + ## MODULE.bazel + non_module_dependencies = use_extension("//:extensions.bzl", "non_module_dependencies") + use_repo(non_module_dependencies, "data_file") + ``` + +### Resolve conflict external dependencies with module extension {:#conflict-deps-module-extension} + +A project can provide a macro that introduces external repositories based on +inputs from its callers. But what if there are multiple callers in the +dependency graph and they cause a conflict? + +Assume the project `foo` provides the following macro which takes `version` as +an argument. + +```python +## repositories.bzl in foo {:#repositories.bzl-foo} +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") +def data_deps(version = "1.0"): + http_file( + name = "data_file", + url = "http://example.com/file-%s" % version, + # Omitting the "sha256" attribute for simplicity + ) +``` + +* **WORKSPACE** + + With WORKSPACE, you can load the macro from `@foo` and specify the version + of the data dependency you need. Assume you have another dependency `@bar`, + which also depends on `@foo` but requires a different version of the data + dependency. + + ```python + ## WORKSPACE + + # Introduce @foo and @bar. + ... + + load("@foo//:repositories.bzl", "data_deps") + data_deps(version = "2.0") + + load("@bar//:repositories.bzl", "bar_deps") + bar_deps() # -> which calls data_deps(version = "3.0") + ``` + + In this case, the end user must carefully adjust the order of macros in the + WORKSPACE to get the version they need. This is one of the biggest pain + points with WORKSPACE since it doesn't really provide a sensible way to + resolve dependencies. + +* **Bzlmod** + + With Bzlmod, the author of project `foo` can use module extension to resolve + conflicts. For example, let's assume it makes sense to always select the + maximal required version of the data dependency among all Bazel modules. + + ```python + ## extensions.bzl in foo + load("//:repositories.bzl", "data_deps") + + data = tag_class(attrs={"version": attr.string()}) + + def _data_deps_extension_impl(module_ctx): + # Select the maximal required version in the dependency graph. + version = "1.0" + for mod in module_ctx.modules: + for data in mod.tags.data: + version = max(version, data.version) + data_deps(version) + + data_deps_extension = module_extension( + implementation = _data_deps_extension_impl, + tag_classes = {"data": data}, + ) + ``` + + ```python + ## MODULE.bazel in bar + bazel_dep(name = "foo", version = "1.0") + + foo_data_deps = use_extension("@foo//:extensions.bzl", "data_deps_extension") + foo_data_deps.data(version = "3.0") + use_repo(foo_data_deps, "data_file") + ``` + + ```python + ## MODULE.bazel in root module + bazel_dep(name = "foo", version = "1.0") + bazel_dep(name = "bar", version = "1.0") + + foo_data_deps = use_extension("@foo//:extensions.bzl", "data_deps_extension") + foo_data_deps.data(version = "2.0") + use_repo(foo_data_deps, "data_file") + ``` + + In this case, the root module requires data version `2.0`, while its + dependency `bar` requires `3.0`. The module extension in `foo` can correctly + resolve this conflict and automatically select version `3.0` for the data + dependency. + +### Integrate third party package manager {:#integrate-package-manager} + +Following the last section, since module extension provides a way to collect +information from the dependency graph, perform custom logic to resolve +dependencies and call repository rules to introduce external repositories, this +provides a great way for rules authors to enhance the rulesets that integrate +package managers for specific languages. + +Please read the [module extensions](/external/extension) page to learn more +about how to use module extensions. + +Here is a list of the rulesets that already adopted Bzlmod to fetch dependencies +from different package managers: + +- [rules_jvm_external](https://github.com/bazelbuild/rules_jvm_external/blob/master/docs/bzlmod.md) +- [rules_go](https://github.com/bazelbuild/rules_go/blob/master/docs/go/core/bzlmod.md) +- [rules_python](https://github.com/bazelbuild/rules_python/blob/main/BZLMOD_SUPPORT.md) + +A minimal example that integrates a pseudo package manager is available at the +[examples][pkg-mgr-example] +repository. + +[pkg-mgr-example]: https://github.com/bazelbuild/examples/tree/main/bzlmod/05-integrate_third_party_package_manager + +### Detect toolchains on the host machine {:#detect-toolchain} + +When Bazel build rules need to detect what toolchains are available on your host +machine, they use repository rules to inspect the host machine and generate +toolchain info as external repositories. + +* **WORKSPACE** + + Given the following repository rule to detect a shell toolchain. + + ```python + ## local_config_sh.bzl + def _sh_config_rule_impl(repository_ctx): + sh_path = get_sh_path_from_env("SH_BIN_PATH") + + if not sh_path: + sh_path = detect_sh_from_path() + + if not sh_path: + sh_path = "/shell/binary/not/found" + + repository_ctx.file("BUILD", """ + load("@bazel_tools//tools/sh:sh_toolchain.bzl", "sh_toolchain") + sh_toolchain( + name = "local_sh", + path = "{sh_path}", + visibility = ["//visibility:public"], + ) + toolchain( + name = "local_sh_toolchain", + toolchain = ":local_sh", + toolchain_type = "@bazel_tools//tools/sh:toolchain_type", + ) + """.format(sh_path = sh_path)) + + sh_config_rule = repository_rule( + environ = ["SH_BIN_PATH"], + local = True, + implementation = _sh_config_rule_impl, + ) + ``` + + You can load the repository rule in WORKSPACE. + + ```python + ## WORKSPACE + load("//:local_config_sh.bzl", "sh_config_rule") + sh_config_rule(name = "local_config_sh") + ``` + +* **Bzlmod** + + With Bzlmod, you can introduce the same repository using a module extension, + which is similar to introducing the `@data_file` repository in the last + section. + + ``` + ## local_config_sh_extension.bzl + load("//:local_config_sh.bzl", "sh_config_rule") + + sh_config_extension = module_extension( + implementation = lambda ctx: sh_config_rule(name = "local_config_sh"), + ) + ``` + + Then use the extension in the MODULE.bazel file. + + ```python + ## MODULE.bazel + sh_config_ext = use_extension("//:local_config_sh_extension.bzl", "sh_config_extension") + use_repo(sh_config_ext, "local_config_sh") + ``` + +### Register toolchains & execution platforms {:#register-toolchains} + +Following the last section, after introducing a repository hosting toolchain +information (e.g. `local_config_sh`), you probably want to register the +toolchain. + +* **WORKSPACE** + + With WORKSPACE, you can register the toolchain in the following ways. + + 1. You can register the toolchain the `.bzl` file and load the macro in the + WORKSPACE file. + + ```python + ## local_config_sh.bzl + def sh_configure(): + sh_config_rule(name = "local_config_sh") + native.register_toolchains("@local_config_sh//:local_sh_toolchain") + ``` + + ```python + ## WORKSPACE + load("//:local_config_sh.bzl", "sh_configure") + sh_configure() + ``` + + 2. Or register the toolchain in the WORKSPACE file directly. + + ```python + ## WORKSPACE + load("//:local_config_sh.bzl", "sh_config_rule") + sh_config_rule(name = "local_config_sh") + register_toolchains("@local_config_sh//:local_sh_toolchain") + ``` + +* **Bzlmod** + + With Bzlmod, the + [`register_toolchains`](/rules/lib/globals/module#register_toolchains) and + [`register_execution_platforms`][register_execution_platforms] + APIs are only available in the MODULE.bazel file. You cannot call + `native.register_toolchains` in a module extension. + + ```python + ## MODULE.bazel + sh_config_ext = use_extension("//:local_config_sh_extension.bzl", "sh_config_extension") + use_repo(sh_config_ext, "local_config_sh") + register_toolchains("@local_config_sh//:local_sh_toolchain") + ``` + +[register_execution_platforms]: /rules/lib/globals/module#register_execution_platforms + +### Introduce local repositories {:#introduce-local-deps} + +You may need to introduce a dependency as a local repository when you need a +local version of the dependency for debugging or you want to incorporate a +directory in your workspace as external repository. + +* **WORKSPACE** + + With WORKSPACE, this is achieved by two native repository rules, + [`local_repository`](/reference/be/workspace#local_repository) and + [`new_local_repository`](/reference/be/workspace#new_local_repository). + + ```python + ## WORKSPACE + local_repository( + name = "rules_java", + path = "/Users/bazel_user/workspace/rules_java", + ) + ``` + +* **Bzlmod** + + With Bzlmod, you can use + [`local_path_override`](/rules/lib/globals/module#local_path_override) to + override a module with a local path. + + ```python + ## MODULE.bazel + bazel_dep(name = "rules_java") + local_path_override( + module_name = "rules_java", + path = "/Users/bazel_user/workspace/rules_java", + ) + ``` + + Note: With `local_path_override`, you can only introduce a local directory + as a Bazel module, which means it should have a MODULE.bazel file and its + transitive dependencies are taken into consideration during dependency + resolution. In addition, all module override directives can only be used by + the root module. + + It is also possible to introduce a local repository with module extension. + However, you cannot call `native.local_repository` in module extension, + there is ongoing effort on starlarkifying all native repository rules (check + [#18285](https://github.com/bazelbuild/bazel/issues/18285) for progress). + Then you can call the corresponding starlark `local_repository` in a module + extension. It's also trivial to implement a custom version of + `local_repository` repository rule if this is a blocking issue for you. + +### Bind targets {:#bind-targets} + +The [`bind`](/reference/be/workspace#bind) rule in WORKSPACE is deprecated and +not supported in Bzlmod. It was introduced to give a target an alias in the +special `//external` package. All users depending on this should migrate away. + +For example, if you have + +```python +## WORKSPACE +bind( + name = "openssl", + actual = "@my-ssl//src:openssl-lib", +) +``` + +This allows other targets to depend on `//external:openssl`. You can migrate +away from this by: + +* Replace all usages of `//external:openssl` with + `@my-ssl//src:openssl-lib`. + +* Or use the [`alias`](/reference/be/general#alias) build rule + * Define the following target in a package (e.g. `//third_party`) + + ```python + ## third_party/BUILD + alias( + name = "openssl, + actual = "@my-ssl//src:openssl-lib", + ) + ``` + + * Replace all usages of `//external:openssl` with + `//third_party:openssl-lib`. + +## Migration {:#migration} + +This section provides useful information and guidance for your Bzlmod migration +process. + +### Know your dependencies in WORKSPACE {:#know-deps-in-workspace} + +The first step of migration is to understand what dependencies you have. It +could be hard to figure out what exact dependencies are introduced in the +WORKSPACE file because transitive dependencies are often loaded with `*_deps` +macros. + +#### Inspect external dependency with workspace resolved file + +Fortunately, the flag +[`--experimental_repository_resolved_file`][resolved_file_flag] +can help. This flag essentially generates a "lock file" of all fetched external +dependencies in your last Bazel command. You can find more details in this [blog +post](https://blog.bazel.build/2018/07/09/bazel-sync-and-resolved-file.html). + +[resolved_file_flag]: /reference/command-line-reference#flag--experimental_repository_resolved_file + +It can be used in two ways: + +1. To fetch info of external dependencies needed for building certain targets. + + ```shell + bazel clean --expunge + bazel build --nobuild --experimental_repository_resolved_file=resolved.bzl //foo:bar + ``` + +2. To fetch info of all external dependencies defined in the WORKSPACE file. + + ```shell + bazel clean --expunge + bazel sync --experimental_repository_resolved_file=resolved.bzl + ``` + + With the `bazel sync` command, you can fetch all dependencies defined in the + WORKSPACE file, which include: + + * `bind` usages + * `register_toolchains` & `register_execution_platforms` usages + + However, if your project is cross platforms, bazel sync may break on certain + platforms because some repository rules may only run correctly on supported + platforms. + +After running the command, you should have information of your external +dependencies in the `resolved.bzl` file. + +#### Inspect external dependency with `bazel query` + +You may also know `bazel query` can be used for inspecting repository rules with + +```shell +bazel query --output=build //external: +``` + +While it is more convenient and much faster, [bazel query can lie about +external dependency version](https://github.com/bazelbuild/bazel/issues/12947), +so be careful using it! Querying and inspecting external +dependencies with Bzlmod is going to achieved by a [new +subcommand](https://github.com/bazelbuild/bazel/issues/15365). + +#### Built-in default dependencies {:#builtin-default-deps} + +If you check the file generated by `--experimental_repository_resolved_file`, +you are going to find many dependencies that are not defined in your WORKSPACE. +This is because Bazel in fact adds prefixes and suffixes to the user's WORKSPACE +file content to inject some default dependencies, which are usually required by +native rules (e.g. `@bazel_tools`, `@platforms` and `@remote_java_tools`). With +Bzlmod, those dependencies are introduced with a built-in module +[`bazel_tools`][bazel_tools] , which is a default dependency for every other +Bazel module. + +[bazel_tools]: https://github.com/bazelbuild/bazel/blob/master/src/MODULE.tools + +### Hybrid mode for gradual migration {:#hybrid-mode} + +Bzlmod and WORKSPACE can work side by side, which allows migrating dependencies +from the WORKSPACE file to Bzlmod to be a gradual process. + +#### WORKSPACE.bzlmod {:#workspace.bzlmod} + +During the migration, Bazel users may need to switch between builds with and +without Bzlmod enabled. WORKSPACE.bzlmod support is implemented to make the +process smoother. + +WORKSPACE.bzlmod has the exact same syntax as WORKSPACE. When Bzlmod is enabled, +if a WORKSPACE.bzlmod file also exists at the workspace root: + +* `WORKSPACE.bzlmod` takes effect and the content of `WORKSPACE` is ignored. +* No [prefixes or suffixes](/external/migration#builtin-default-deps) are + added to the WORKSPACE.bzlmod file. + +Using the WORKSPACE.bzlmod file can make the migration easier because: + +* When Bzlmod is disabled, you fall back to fetching dependencies from the + original WORKSPACE file. +* When Bzlmod is enabled, you can better track what dependencies are left to + migrate with WORKSPACE.bzlmod. + +Note: WORKSPACE.bzlmod does NOT replace the functionality of WORKSPACE for +identifying the workspace root, therefore you still need a WORKSPACE file at +your workspace root. + +#### Repository visibility {:#repository-visibility} + +Bzlmod is able to control which other repositories are visible from a given +repository, check [repository names and strict +deps](/external/module#repository_names_and_strict_deps) for more details. + +Here is a summary of repository visibilities from different types of +repositories when also taking WORKSPACE into consideration. + +| | From the main repo | From Bazel module repos | From module extension repos | From WORKSPACE repos | +|----------------|--------------------|-------------------------|---------------------------------------------------------------------------------------------------------------------|----------------------| +| The main repo | Visible | If the root module is a direct dependency | If the root module is a direct dependency of the module hosting the module extension | Visible | +| Bazel module repos | Direct deps | Direct deps | Direct deps of the module hosting the module extension | Direct deps of the root module | +| Module extension repos | Direct deps | Direct deps | Direct deps of the module hosting the module extension + all repos generated by the same module extension | Direct deps of the root module | +| WORKSPACE Repos | All visible | Not visible | Not visible | All visible | + +Note: For the root module, if a repository `@foo` is defined in WORKSPACE and +`@foo` is also used as an [apparent repository +name](/external/overview#apparent-repo-name) in MODULE.bazel, then `@foo` +refers to the one introduced in MODULE.bazel. + +Note: For a module extension generated repository `@bar`, if `@foo` is used as +an [apparent repository name](/external/overview#apparent-repo-name) of +another repository generated by the same module extension and direct +dependencies of the module hosting the module extension, then for repository +`@bar`, `@foo` refers to the latter. + +### Migration process {:#migration-process} + +A typical Bzlmod migration process can look like this: + +1. Understand what dependencies you have in WORKSPACE. +1. Add an empty MODULE.bazel file at your project root. +1. Add an empty WORKSPACE.bzlmod file to override the WORKSPACE file content. +1. Build your targets with Bzlmod enabled and check which repository is + missing. +1. Check the definition of the missing repository in the resolved dependency + file. +1. Introduce the missing dependency as a Bazel module, through a module + extension, or leave it in the WORKSPACE.bzlmod for later migration. +1. Go back to 4 and repeat until all dependencies are available. + +#### Migration tool {:#migration-tool} + +There is an interactive Bzlmod migration [helper script][migration_script] that +can get you started. + +[migration_script]: https://github.com/bazelbuild/bazel-central-registry/blob/main/tools/migrate_to_bzlmod.py + +The script does the following things: + +* Generate and parse the WORKSPACE resolved file. +* Print repository info from the resolved file in a human readable way. +* Run bazel build command, detect recognized error messages, and recommend a + way to migrate. +* Check if a dependency is already available in the BCR. +* Add a dependency to MODULE.bazel file. +* Add a dependency through a module extension. +* Add a dependency to WORKSPACE.bzlmod file. + +To use it, make sure you have the latest Bazel release installed, and run the +following command: + +```shell +git clone https://github.com/bazelbuild/bazel-central-registry.git +cd +/tools/migrate_to_bzlmod.py -t +``` + +Note: The migration script is not perfect and may not be up-to-date since Bzlmod +is evolving, always double check if the recommended solution is correct. + +## Publish Bazel modules {:#publish-modules} + +If your Bazel project is a dependency for other projects, you can publish your +project in the [Bazel Central Registry](https://registry.bazel.build/). + +To be able to check in your project in the BCR, you need a source archive URL of +the project. Take note of a few things when creating the source archive: + +* **Make sure the archive is pointing to a specific version.** + + The BCR can only accept versioned source archives because Bzlmod needs to + conduct version comparison during dependency resolution. + +* **Make sure the archive URL is stable.** + + Bazel verifies the content of the archive by a hash value, so you should + make sure the checksum of the downloaded file never changes. If the URL is + from GitHub, please create and upload a release archive in the release page. + GitHub isn't going to guarantee the checksum of source archives generated on + demand. In short, URLs in the form of + `https://github.com///releases/download/...` is considered stable + while `https://github.com///archive/...` is not. Check [GitHub + Archive Checksum + Outage](https://blog.bazel.build/2023/02/15/github-archive-checksum.html) + for more context. + +* **Make sure the source tree follows the layout of the original repository.** + + In case your repository is very large and you want to create a distribution + archive with reduced size by stripping out unnecessary sources, please make + sure the stripped source tree is a subset of the original source tree. This + makes it easier for end users to override the module to a non-release + version by [`archive_override`](/rules/lib/globals/module#archive_override) + and [`git_override`](/rules/lib/globals/module#git_override). + +* **Include a test module in a subdirectory that tests your most common + APIs.** + + A test module is a Bazel project with its own WORKSPACE and MODULE.bazel + file located in a subdirectory of the source archive which depends on the + actual module to be published. It should contain examples or some + integration tests that cover your most common APIs. Check + [test module][test_module] to learn how to set it up. + +[test_module]: https://github.com/bazelbuild/bazel-central-registry/tree/main/docs#test-module + +When you have your source archive URL ready, follow the [BCR contribution +guidelines][bcr_contrib_guide] to submit your module to the BCR with a GitHub +Pull Request. + +[bcr_contrib_guide]: https://github.com/bazelbuild/bazel-central-registry/tree/main/docs#contribute-a-bazel-module + +It is **highly recommended** to set up the [Publish to +BCR](https://github.com/bazel-contrib/publish-to-bcr) GitHub App for your +repository to automate the process of submitting your module to the BCR. + +## Best practices {:#best-practices} + +This section documents a few best practices you should follow for better +managing your external dependencies. + +#### Split targets into different packages to avoid fetching unnecessary dependencies. + +Check [#12835](https://github.com/bazelbuild/bazel/issues/12835), where dev +dependencies for tests are forced to be fetched unnecessarily for building +targets that don't need them. This is not actually not Bzlmod specific, but +following this practices makes it easier to specify dev dependencies correctly. + +#### Specify dev dependencies + +You can set the `dev_dependency` attribute to true for +[`bazel_dep`](/rules/lib/globals/module#bazel_dep) and +[`use_extension`](/rules/lib/globals/module#use_extension) directives so that +they don't propagate to dependent projects. As the root module, you can use the +[`--ignore_dev_dependency`][ignore_dev_dep_flag] flag to verify if your targets +still build without dev dependencies. + +[ignore_dev_dep_flag]: /reference/command-line-reference#flag--ignore_dev_dependency + +{# More best practices here !!! #} + +## Community migration progress {:#migration-progress} + +You can check the [Bazel Central Registry](https://registry.bazel.build) to find +out if your dependencies are already available. Otherwise feel free to join this +[GitHub discussion](https://github.com/bazelbuild/bazel/discussions/18329) to +upvote or post the dependencies that are blocking your migration. + +## Report issues {:#reporting-issues} + +Please check the [Bazel GitHub issue list][bzlmod_github_issue] for known Bzlmod +issues. Feel free to file new issues or feature requests that can help unblock +your migration! + +[bzlmod_github_issue]: https://github.com/bazelbuild/bazel/issues?q=is%3Aopen+is%3Aissue+label%3Aarea-Bzlmod diff --git a/site/en/external/module.md b/site/en/external/module.md index a273acb221defd..eda5fc0177da39 100644 --- a/site/en/external/module.md +++ b/site/en/external/module.md @@ -108,12 +108,12 @@ exist in the resolved dependency graph. ## Overrides Specify overrides in the `MODULE.bazel` file to alter the behavior of Bazel -module resolution. Only the root module can specify overrides — Bazel throws an -error for dependency modules with overrides. +module resolution. Only the root module's overrides take effect — if a module is +used as a dependency, its overrides are ignored. Each override is specified for a certain module name, affecting all of its -versions in the dependency graph. Although only the root module can specify -overrides, they can be for transitive dependencies that the root module does not +versions in the dependency graph. Although only the root module's overrides take +effect, they can be for transitive dependencies that the root module does not directly depend on. ### Single-version override @@ -175,16 +175,16 @@ Bazel supports the following non-registry overrides: ## Repository names and strict deps -The [canonical name](/external/overview#canonical_repository_name) of a repo -backing a module is `{{ "" }}module_name{{ "" }}~{{ "" -}}version{{ "" }}` (for example, `bazel_skylib~1.0.3`). For modules with a +The [canonical name](/external/overview#canonical-repo-name) of a repo backing a +module is `{{ "" }}module_name{{ "" }}~{{ "" }}version{{ +"" }}` (for example, `bazel_skylib~1.0.3`). For modules with a non-registry override, replace the `{{ "" }}version{{ "" }}` part with the string `override`. Note that the canonical name format is not an API you should depend on and is subject to change at any time. -The [apparent name](/external/overview#apparent_repository_name) of a repo -backing a module to its direct dependents defaults to its module name, unless -the `repo_name` attribute of the [`bazel_dep`](/rules/lib/globals/module#bazel_dep) +The [apparent name](/external/overview#apparent-repo-name) of a repo backing a +module to its direct dependents defaults to its module name, unless the +`repo_name` attribute of the [`bazel_dep`](/rules/lib/globals/module#bazel_dep) directive says otherwise. Note that this means a module can only find its direct dependencies. This helps prevent accidental breakages due to changes in transitive dependencies. diff --git a/site/en/external/overview.md b/site/en/external/overview.md index f497508558b705..97714878a0f46e 100644 --- a/site/en/external/overview.md +++ b/site/en/external/overview.md @@ -15,23 +15,24 @@ the traditional, repository-focused [`WORKSPACE` system](#workspace-system), and the newer module-focused [`MODULE.bazel` system](#bzlmod) (codenamed *Bzlmod*, and enabled with the flag `--enable_bzlmod`). The two systems can be used together, but Bzlmod is replacing the `WORKSPACE` system in future Bazel -releases. +releases, check the [Bzlmod migration guide](/external/migration) on how to +migrate. -This article explains the concepts surrounding external dependency management in -Bazel, before going into a bit more detail about the two systems in order. +This document explains the concepts surrounding external dependency management +in Bazel, before going into a bit more detail about the two systems in order. -## Concepts +## Concepts {:#concepts} -### Repository +### Repository {:#repository} A directory with a `WORKSPACE` or `WORKSPACE.bazel` file, containing source files to be used in a Bazel build. Often shortened to just **repo**. -### Main repository +### Main repository {:#main-repository} The repository in which the current Bazel command is being run. -### Workspace +### Workspace {:#workspace} The environment shared by all Bazel commands run in the same main repository. @@ -39,7 +40,7 @@ Note that historically the concepts of "repository" and "workspace" have been conflated; the term "workspace" has often been used to refer to the main repository, and sometimes even used as a synonym of "repository". -### Canonical repository name +### Canonical repository name {:#canonical-repo-name} The canonical name a repository is addressable by. Within the context of a workspace, each repository has a single canonical name. A target inside a repo @@ -48,7 +49,7 @@ whose canonical name is `canonical_name` can be addressed by the label The main repository always has the empty string as the canonical name. -### Apparent repository name +### Apparent repository name {:#apparent-repo-name} The name a repository is addressable by in the context of a certain other repo. This can be thought of as a repo's "nickname": The repo with the canonical name @@ -60,7 +61,7 @@ This can be thought of as a repo's "nickname": The repo with the canonical name Conversely, this can be understood as a **repository mapping**: each repo maintains a mapping from "apparent repo name" to a "canonical repo name". -### Repository rule +### Repository rule {:#repo-rule} A schema for repository definitions that tells Bazel how to materialize a repository. For example, it could be "download a zip archive from a certain URL @@ -68,7 +69,7 @@ and extract it", or "fetch a certain Maven artifact and make it available as a `java_import` target", or simply "symlink a local directory". Every repo is **defined** by calling a repo rule with an appropriate number of arguments. -See [Repository rules](/extending/repo) for more information on how to write +See [Repository rules](/extending/repo) for more information about how to write your own repository rules. The most common repo rules by far are @@ -77,17 +78,17 @@ from a URL and extracts it, and [`local_repository`](/reference/be/workspace#local_repository), which symlinks a local directory that is already a Bazel repository. -### Fetching a repository +### Fetch a repository {:#fetch-repository} The action of making a repo available on local disk by running its associated repo rule. The repos defined in a workspace are not available on local disk before they are fetched. -Normally, Bazel will only fetch a repo when it needs something from the repo, +Normally, Bazel only fetches a repo when it needs something from the repo, and the repo hasn't already been fetched. If the repo has already been fetched -before, Bazel will only re-fetch it if its definition has changed. +before, Bazel only re-fetches it if its definition has changed. -### Directory layout +### Directory layout {:#directory-layout} After being fetched, the repo can be found in the subdirectory `external` in the [output base](/remote/output-directories), under its canonical name. @@ -99,7 +100,7 @@ canonical name `canonical_name`: ls $(bazel info output_base)/external/{{ '' }} canonical_name {{ '' }} ``` -## Managing external dependencies with Bzlmod {:#bzlmod} +## Manage external dependencies with Bzlmod {:#bzlmod} Bzlmod, the new external dependency subsystem, does not directly work with repo definitions. Instead, it builds a dependency graph from _modules_, runs @@ -137,17 +138,18 @@ requests. Among other things, they allow Bazel to interact with other package management systems while also respecting the dependency graph built out of Bazel modules. -### External links on Bzlmod +### External links on Bzlmod {:#external-links} * [Bzlmod usage examples in bazelbuild/examples](https://github.com/bazelbuild/examples/tree/main/bzlmod){:.external} * [Bazel External Dependencies Overhaul](https://docs.google.com/document/d/1moQfNcEIttsk6vYanNKIy3ZuK53hQUFq1b1r0rmsYVg/edit){: .external} (original Bzlmod design doc) * [BazelCon 2021 talk on Bzlmod](https://www.youtube.com/watch?v=TxOCKtU39Fs){: .external} +* [Bazel Community Day talk on Bzlmod](https://www.youtube.com/watch?v=MB6xxis9gWI){: .external} -## Defining repos with `WORKSPACE` {:#workspace-system} +## Define repos with `WORKSPACE` {:#workspace-system} -Historically, you can manage external dependencies by defining repos in -the `WORKSPACE` (or `WORKSPACE.bazel`) file. This file has a similar syntax to +Historically, you can manage external dependencies by defining repos in the +`WORKSPACE` (or `WORKSPACE.bazel`) file. This file has a similar syntax to `BUILD` files, employing repo rules instead of build rules. The following snippet is an example to use the `http_archive` repo rule in the @@ -166,9 +168,10 @@ The snippet defines a repo whose canonical name is `foo`. In the `WORKSPACE` system, by default, the canonical name of a repo is also its apparent name to all other repos. -See the [full list](/rules/lib/globals/workspace) of functions available in `WORKSPACE` files. +See the [full list](/rules/lib/globals/workspace) of functions available in +`WORKSPACE` files. -### Shortcomings of the `WORKSPACE` system +### Shortcomings of the `WORKSPACE` system {:#workspace-shortcomings} In the years since the `WORKSPACE` system was introduced, users have reported many pain points, including: @@ -187,4 +190,8 @@ many pain points, including: dependencies are specified using `http_archive` with URLs, without any version information. This means that there is no reliable way to perform version resolution in the case of diamond dependencies (`A` depends on - `B` and `C`; `B` and `C` both depend on different versions of `D`). \ No newline at end of file + `B` and `C`; `B` and `C` both depend on different versions of `D`). + +Due to the shortcomings of WORKSPACE, Bzlmod is going to replace the legacy +WORKSPACE system in future Bazel releases. Please read the [Bzlmod migration +guide](/external/migration) on how to migrate to Bzlmod. \ No newline at end of file diff --git a/site/en/help.md b/site/en/help.md index 029a52092841d4..f9bf54b4c5ac6f 100644 --- a/site/en/help.md +++ b/site/en/help.md @@ -24,6 +24,7 @@ In addition to the documentation, you can find helpful information by searching: There are recordings of Bazel talks at various conferences, such as: * Bazel’s annual conference, BazelCon: + * [BazelCon 2022](https://youtube.com/playlist?list=PLxNYxgaZ8RsdH4GCIZ69dzxQCOPyuNlpF){: .external} * [BazelCon 2021](https://www.youtube.com/playlist?list=PLxNYxgaZ8Rsc3auKhtfIB4qXAYf7whEux){: .external} * [BazelCon 2020](https://www.youtube.com/playlist?list=PLxNYxgaZ8RseRybXNbopHRv6-wGmFr04n){: .external} * [BazelCon 2019](https://youtu.be/eymphDN7No4?t=PLxNYxgaZ8Rsf-7g43Z8LyXct9ax6egdSj){: .external} @@ -43,6 +44,11 @@ If there are no existing answers, you can ask the community by: * Chatting with other Bazel contributors on [Slack](https://slack.bazel.build/) * Consulting a [Bazel community expert](/community/experts) +## Understand Bazel's support level {:#support-level} + +Please read the [release page](/release) to understand Bazel's release model and +what level of support Bazel provides. + ## File a bug {:#file-bug} If you encounter a bug or want to request a feature, file a [GitHub diff --git a/site/en/install/docker-container.md b/site/en/install/docker-container.md index a00e02072bc38c..9b5f5748d4da62 100644 --- a/site/en/install/docker-container.md +++ b/site/en/install/docker-container.md @@ -64,7 +64,7 @@ docker run \ The instructions in this section allow you to build using the Bazel container with the sources inside the container. By starting a container at the beginning -of your developement workflow and doing changes in the worskpace within the +of your development workflow and doing changes in the worskpace within the container, build results will be cached. Start a shell in the Bazel container: @@ -73,7 +73,7 @@ Start a shell in the Bazel container: docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest ``` -Each container id is unique. In the instructions bellow, the container was 5a99103747c6. +Each container id is unique. In the instructions below, the container was 5a99103747c6. Clone the project. diff --git a/site/en/query/cquery.md b/site/en/query/cquery.md index 10d10d37e123de..0f415cf0185e89 100644 --- a/site/en/query/cquery.md +++ b/site/en/query/cquery.md @@ -11,7 +11,7 @@ graph. It achieves this by running over the results of Bazel's [analysis phase](/extending/concepts#evaluation-model), -which integrates these effects. `query`, by constrast, runs over the results of +which integrates these effects. `query`, by contrast, runs over the results of Bazel's loading phase, before options are evaluated. For example: @@ -65,8 +65,8 @@ the [configuration](/reference/glossary#configuration) the target is built with. Since `cquery` runs over the configured target graph. it doesn't have insight -into artifacts like build actions nor access to `[test_suite](/reference/be/general#test_suite)` -rules as they are not configured targets. For the former, see `[aquery](/query/aquery)`. +into artifacts like build actions nor access to [`test_suite`](/reference/be/general#test_suite) +rules as they are not configured targets. For the former, see [`aquery`](/query/aquery). ## Basic syntax {:#basic-syntax} @@ -209,8 +209,9 @@ genrule( cmd = "$(locations :tool) $< >$@", tools = [":tool"], ) -cc_library( +cc_binary( name = "tool", + srcs = ["tool.cpp"], ) @@ -275,24 +276,17 @@ of resolved toolchains. #### `--include_aspects` (boolean, default=True) {:#include-aspects} -[Aspects](/extending/aspects) can add -additional dependencies to a build. By default, `cquery` doesn't follow aspects because -they make the queryable graph bigger, which uses more memory. But following them produces more -accurate results. - -If you're not worried about the memory impact of large queries, enable this flag by default in -your bazelrc. +Include dependencies added by [aspects](/extending/aspects). -If you query with aspects disabled, you can experience a problem where target X fails while -building target Y but `cquery somepath(Y, X)` and `cquery deps(Y) | grep 'X' -` return no results because the dependency occurs through an aspect. +If this flag is disabled, `cquery somepath(X, Y)` and +`cquery deps(X) | grep 'Y'` omit Y if X only depends on it through an aspect. ## Output formats {:#output-formats} By default, cquery outputs results in a dependency-ordered list of label and configuration pairs. There are other options for exposing the results as well. -### Transitions {:#transitions} +### Transitions {:#transitions}
 --transitions=lite
@@ -324,7 +318,7 @@ outputs the same information without the options diff.
 
 This option causes the resulting targets to be printed in a binary protocol
 buffer form. The definition of the protocol buffer can be found at
-[src/main/protobuf/analysis.proto](https://github.com/bazelbuild/bazel/blob/master/src/main/protobuf/analysis_v2.proto){: .external}.
+[src/main/protobuf/analysis_v2.proto](https://github.com/bazelbuild/bazel/blob/master/src/main/protobuf/analysis_v2.proto){: .external}.
 
 `CqueryResult` is the top level message containing the results of the cquery. It
 has a list of `ConfiguredTarget` messages and a list of `Configuration`
@@ -532,12 +526,12 @@ different niches. Consider the following to decide which is right for you:
     `query` does. Specifically, `cquery`
     evaluates _configured targets_ while `query` only
     evaluates _targets_. This takes more time and uses more memory.
-*   `cquery`'s intepretation of
+*   `cquery`'s interpretation of
     the [query language](/query/language) introduces ambiguity
     that `query` avoids. For example,
     if `"//foo"` exists in two configurations, which one
     should `cquery "deps(//foo)"` use?
-    The `[config](#config)` function can help with this.
+    The [`config`](#config) function can help with this.
 *   As a newer tool, `cquery` lacks support for certain use
     cases. See [Known issues](#known-issues) for details.
 
diff --git a/site/en/query/language.md b/site/en/query/language.md
index 1cb8e2b7e9fc5c..ba3d09312b26ac 100644
--- a/site/en/query/language.md
+++ b/site/en/query/language.md
@@ -590,7 +590,7 @@ equivalent to `rdeps(//foo/..., //bar)`.
 expr ::= same_pkg_direct_rdeps({{ '' }}expr{{ '' }})
 ```
 
-The `same_pkg_direct_rdeps({{ '' }}x{{ '' }})` operator evalutes to the full set of targets
+The `same_pkg_direct_rdeps({{ '' }}x{{ '' }})` operator evaluates to the full set of targets
 that are in the same package as a target in the argument set, and which directly depend on it.
 
 ### Dealing with a target's package: siblings {:#siblings}
@@ -599,7 +599,7 @@ that are in the same package as a target in the argument set, and which directly
 expr ::= siblings({{ '' }}expr{{ '' }})
 ```
 
-The `siblings({{ '' }}x{{ '' }})` operator evalutes to the full set of targets that are in
+The `siblings({{ '' }}x{{ '' }})` operator evaluates to the full set of targets that are in
 the same package as a target in the argument set.
 
 ### Arbitrary choice: some {:#some}
diff --git a/site/en/reference/test-encyclopedia.md b/site/en/reference/test-encyclopedia.md
index 267d11dd77b08f..88aa868e8e12e1 100644
--- a/site/en/reference/test-encyclopedia.md
+++ b/site/en/reference/test-encyclopedia.md
@@ -225,8 +225,9 @@ shard index, beginning at 0. Runners use this information to select which tests
 to run - for example, using a round-robin strategy. Not all test runners support
 sharding. If a runner supports sharding, it must create or update the last
 modified date of the file specified by
-[`TEST_SHARD_STATUS_FILE`](#initial-conditions). Otherwise, Bazel assumes it
-does not support sharding and will not launch additional runners.
+[`TEST_SHARD_STATUS_FILE`](#initial-conditions). Otherwise, if
+[`--incompatible_check_sharding_support`](/reference/command-line-reference#flag--incompatible_check_sharding_support)
+is enabled, Bazel will fail the test if it is sharded.
 
 ## Initial conditions {:#initial-conditions}
 
diff --git a/site/en/release/backward-compatibility.md b/site/en/release/backward-compatibility.md
index cb9034d3774da6..5fb54fb036ce6f 100644
--- a/site/en/release/backward-compatibility.md
+++ b/site/en/release/backward-compatibility.md
@@ -5,30 +5,33 @@ Book: /_book.yaml
 
 {% include "_buttons.html" %}
 
-This page provides information on how to handle backward compatibility,
+This page provides information about how to handle backward compatibility,
 including migrating from one release to another and how to communicate
 incompatible changes.
 
-Bazel is evolving. Minor versions released as part of an
-[LTS major version](/release/versioning#lts-releases) are fully backward-compatible.
-Changes between major LTS releases may contain incompatible changes that require
-some migration effort. For more information on how the Bazel release cadence
-works, see
-[Announcing Bazel Long Term Support (LTS) releases](https://blog.bazel.build/2020/11/10/long-term-support-release.html).
+Bazel is evolving. Minor versions released as part of an [LTS major
+version](/release#bazel-versioning) are fully backward-compatible. New major LTS
+releases may contain incompatible changes that require some migration effort.
+For more information about Bazel's release model, please check out the [Release
+Model](/release) page.
 
 ## Summary {:#summary}
 
-1. It is recommended to use `--incompatible_*` flags for breaking changes.
-1. For every `--incompatible_*` flag, a GitHub issue explains
-   the change in behavior and aims to provide a migration recipe.
-1. APIs and behavior guarded by an `--experimental_*` flag can change at any time.
-1. Never run production builds with `--experimental_*`  or `--incompatible_*` flags.
+1.  It is recommended to use `--incompatible_*` flags for breaking changes.
+1.  For every `--incompatible_*` flag, a GitHub issue explains the change in
+    behavior and aims to provide a migration recipe.
+1.  Incompatible flags are recommended to be back-ported to the latest LTS
+    release without enabling the flag by default.
+1.  APIs and behavior guarded by an `--experimental_*` flag can change at any
+    time.
+1.  Never run production builds with `--experimental_*` or `--incompatible_*`
+    flags.
 
 ## How to follow this policy {:#policy}
 
-* [For Bazel users - how to update Bazel](/install/bazelisk)
-* [For contributors - best practices for incompatible changes](/contribute/breaking-changes)
-* [For release managers - how to update issue labels and release](https://github.com/bazelbuild/continuous-integration/tree/master/docs/release-playbook.%6D%64){: .external}
+*   [For Bazel users - how to update Bazel](/install/bazelisk)
+*   [For contributors - best practices for incompatible changes](/contribute/breaking-changes)
+*   [For release managers - how to update issue labels and release](https://github.com/bazelbuild/continuous-integration/tree/master/docs/release-playbook.%6D%64){: .external}
 
 ## What is stable functionality? {:#stable-functionality}
 
@@ -37,30 +40,38 @@ stable, supported features in Bazel.
 
 This includes:
 
-* Starlark language and APIs
-* Rules bundled with Bazel
-* Bazel APIs such as Remote Execution APIs or Build Event Protocol
-* Flags and their semantics
+*   Starlark language and APIs
+*   Rules bundled with Bazel
+*   Bazel APIs such as Remote Execution APIs or Build Event Protocol
+*   Flags and their semantics
 
 ## Incompatible changes and migration recipes {:#incompatible-changes}
 
 For every incompatible change in a new release, the Bazel team aims to provide a
-_migration recipe_ that helps you update your code
-(`BUILD` and `.bzl` files, as well as any Bazel usage in scripts,
-usage of Bazel API, and so on).
+_migration recipe_ that helps you update your code (`BUILD` and `.bzl` files, as
+well as any Bazel usage in scripts, usage of Bazel API, and so on).
 
 Incompatible changes should have an associated `--incompatible_*` flag and a
 corresponding GitHub issue.
 
+The incompatible flag and relevant changes are recommended to be back-ported to
+the latest LTS release without enabling the flag by default. This allows users
+to migrate for the incompatible changes before the next LTS release is
+available.
+
 ## Communicating incompatible changes {:#communicating-incompatible-changes}
 
 The primary source of information about incompatible changes are GitHub issues
-marked with an ["incompatible-change" label](https://github.com/bazelbuild/bazel/issues?q=label%3Aincompatible-change){: .external}.
+marked with an ["incompatible-change"
+label](https://github.com/bazelbuild/bazel/issues?q=label%3Aincompatible-change){: .external}.
 
 For every incompatible change, the issue specifies the following:
 
-* Name of the flag controlling the incompatible change
-* Description of the changed functionality
-* Migration recipe
+*   Name of the flag controlling the incompatible change
+*   Description of the changed functionality
+*   Migration recipe
 
-When an incompatible change is ready for migration with Bazel at HEAD (therefore, also with the next Bazel rolling release), it should be marked with the `migration-ready` label. The incompatible change issue is closed when the incompatible flag is flipped at HEAD.
+When an incompatible change is ready for migration with Bazel at HEAD
+(therefore, also with the next Bazel rolling release), it should be marked with
+the `migration-ready` label. The incompatible change issue is closed when the
+incompatible flag is flipped at HEAD.
\ No newline at end of file
diff --git a/site/en/release/index.md b/site/en/release/index.md
index 22d02bd34f2006..aeff4999831bab 100644
--- a/site/en/release/index.md
+++ b/site/en/release/index.md
@@ -1,64 +1,178 @@
 Project: /_project.yaml
 Book: /_book.yaml
 
-# Release Policy
+# Release Model
 
 {% dynamic setvar source_file "site/en/release/index.md" %}
 {% include "_buttons.html" %}
 
-Bazel maintains a
-[Long Term Support (LTS)](/release/versioning)
-release model, where a major version is released every nine months and minor
-versions are released monthly. This page covers the Bazel release policy,
-including the release candidates, timelines, announcements, and testing.
-
-Bazel releases can be found on
-[GitHub](https://github.com/bazelbuild/bazel/releases){: .external}.
-
-## Release candidates {:#release-candidates}
-
-A release candidate for a new version of Bazel is usually created at the
-beginning of every month. The work is tracked by a
-[release bug on GitHub](https://github.com/bazelbuild/bazel/issues?q=is%3Aissue+is%3Aopen+label%3Arelease){: .external}
-indicating a target release date, and is assigned to the current Release manager.
-Release candidates should pass all Bazel unit tests, and show no unwanted
-regression in the projects tested on [Buildkite](https://buildkite.com/bazel){: .external}.
-
-Release candidates are announced on
-[bazel-discuss](https://groups.google.com/g/bazel-discuss){: .external}.
-Over the next days, the Bazel team monitors community bug reports for any
-regressions in the candidates.
-
-## Releasing {:#releasing}
-
-If no regressions are discovered, the candidate is officially released after
-one week. However, regressions can delay the release of a release candidate. If
-regressions are found, the Bazel team applies corresponding cherry-picks to the
-release candidate to fix those regressions. If no further regressions are found
-for two consecutive business days beginning after one week since the first
-release candidate, the candidate is released.
-
-New features are not cherry-picked into a release candidate after it is cut.
-Moreover, if a new feature is buggy, the feature may be rolled back from a
-release candidate. Only bugs that have the potential to highly impact or break
-the release build are fixed in a release candidate after it is cut.
-
-A release is only released on a day where the next day is a business day.
-
-If a critical issue is found in the latest release, the Bazel team creates a
-patch release by applying the fix to the release. Because this patch updates an
-existing release instead of creating a new one, the patch release candidate can
-be released after two business days.
-
-## Testing {:#testing}
-
-A nightly build of all projects running on
-[ci.bazel.build](https://github.com/bazelbuild/continuous-integration/blob/master/buildkite/README.md){: .external} is run, using Bazel
-binaries built at head, and release binaries. Projects going to be impacted by a
-breaking change are notified.
-
-When a release candidate is issued, other Google projects like
-[TensorFlow](https://tensorflow.org){: .external} are tested on their complete
-test suite using the release candidate binaries. If you have a critical project
-using Bazel, we recommend that you establish an automated testing process that
-tracks the current release candidate, and report any regressions.
+As announced in [the original blog
+post](https://blog.bazel.build/2020/11/10/long-term-support-release.html), Bazel
+4.0 and higher versions provides support for two release tracks: rolling
+releases and long term support (LTS) releases. This page covers the latest
+information about Bazel's release model.
+
+## Release versioning {:#bazel-versioning}
+
+Bazel uses a _major.minor.patch_ [Semantic
+Versioning](https://semver.org/){: .external} scheme.
+
+*   A _major release_ contains features that are not backward compatible with
+    the previous release. Each major Bazel version is an LTS release.
+*   A _minor release_ contains backward-compatible bug fixes and features
+    back-ported from the main branch.
+*   A _patch release_ contains critical bug fixes.
+
+Additionally, pre-release versions are indicated by appending a hyphen and a
+date suffix to the next major version number.
+
+For example, a new release of each type would result in these version numbers:
+
+*   Major: 6.0.0
+*   Minor: 6.1.0
+*   Patch: 6.1.2
+*   Pre-release: 7.0.0-pre.20230502.1
+
+## Support stages {:#support-stages}
+
+For each major Bazel version, there are four support stages:
+
+*   **Rolling**: This major version is still in pre-release, the Bazel team
+    publishes rolling releases from HEAD.
+*   **Active**: This major version is the current active LTS release. The Bazel
+  team backports important features and bug fixes into its minor releases.
+*   **Maintenance**: This major version is an old LTS release in maintenance
+    mode. The Bazel team only promises to backport critical bug fixes for
+    security issues and OS-compatibility issues into this LTS release.
+*   **Deprecated**: The Bazel team no longer provides support for this major
+    version, all users should migrate to newer Bazel LTS releases.
+
+## Release cadence {:#release-cadence}
+
+Bazel regularly publish releases for two release tracks.
+
+### Rolling releases {:#rolling-releases}
+
+*   Rolling releases are coordinated with Google Blaze release and are released
+  from HEAD around every two weeks. It is a preview of the next Bazel LTS
+    release.
+*   Rolling releases can ship incompatible changes. Incompatible flags are
+    recommended for major breaking changes, rolling out incompatible changes
+    should follow our [backward compatibility
+    policy](/release/backward-compatibility).
+
+### LTS releases {:#lts-releases}
+
+*   _Major release_: A new LTS release is expected to be cut from HEAD roughly
+    every
+    12 months. Once a new LTS release is out, it immediately enters the Active
+    stage, and the previous LTS release enters the Maintenance stage.
+*   _Minor release_: New minor verions on the Active LTS track are expected to
+    be released once every 2 months.
+*   _Patch release_: New patch versions for LTS releases in Active and
+    Maintenance stages are expected to be released on demand for critical bug
+    fixes.
+*   A Bazel LTS release enters the Deprecated stage after being in ​​the
+    Maintenance stage for 2 years.
+
+For planned releases, please check our [release
+issues](https://github.com/bazelbuild/bazel/issues?q=is%3Aopen+is%3Aissue+label%3Arelease){: .external}
+on Github.
+
+## Support matrix {:#support-matrix}
+
+| LTS release | Support stage | Latest version | End of support |
+| ----------- | ------------- | -------------- | -------------- |
+| Bazel 7 | Rolling| [Check GitHub release page](https://github.com/bazelbuild/bazel/releases){: .external} | N/A |
+| Bazel 6 | Active | [6.2.1](https://github.com/bazelbuild/bazel/releases/tag/6.2.1){: .external} | Dec 2025 |
+| Bazel 5 | Maintenance | [5.4.1](https://github.com/bazelbuild/bazel/releases/tag/5.4.1){: .external} | Jan 2025 |
+| Bazel 4 | Maintenance | [4.2.4](https://github.com/bazelbuild/bazel/releases/tag/4.2.4){: .external} | Jan 2024 |
+
+All Bazel releases can be found on the [release
+page](https://github.com/bazelbuild/bazel/releases){: .external} on GitHub.
+
+Note: Bazel version older than Bazel 4 are no longer supported, Bazel users are
+recommended to upgrade to the latest LTS release or use rolling releases if you
+want to keep up with the latest changes at HEAD.
+
+## Release procedure & policies {:#release-procedure-policies}
+
+For rolling releases, the process is straightforward: about every two weeks, a
+new release is created, aligning with the same baseline as the Google internal
+Blaze release. Due to the rapid release schedule, we don't backport any changes
+to rolling releases.
+
+For LTS releases, the procedure and policies below are followed:
+
+1.  Determine a baseline commit for the release.
+    *   For a new major LTS release, the baseline commit is the HEAD of the main
+        branch.
+    *   For a minor or patch release, the baseline commit is the HEAD of the
+        current latest version of the same LTS release.
+1.  Create a release branch in the name of `release-` from the baseline
+    commit.
+1.  Backport changes via PRs to the release branch.
+    *   The community can suggest certain commits to be back-ported by replying
+   "`@bazel-io flag`" on relevant GitHub issues or PRs to mark them as potential
+        release blockers, the Bazel team triages them and decide whether to
+        back-port the commits.
+    *   Only backward-compatible commits on the main branch can be back-ported,
+   additional minor changes to resolve merge conflicts are acceptable.
+1.  Identify release blockers and fix issues found on the release branch.
+    *   The release branch is tested with the same test suite in
+        [postsubmit](https://buildkite.com/bazel/bazel-bazel){: .external} and
+        [downstream test pipeline]
+        (https://buildkite.com/bazel/bazel-at-head-plus-downstream){: .external}
+        on Bazel CI. The Bazel team monitors testing results of the release
+        branch and fixes any regressions found.
+1.  Create a new release candidate from the release branch when all known
+    release blockers are resolved.
+    *   The release candidate is announced on
+        [bazel-discuss](https://groups.google.com/g/bazel-discuss){: .external},
+        the Bazel team monitors community bug reports for the candidate.
+    *   If new release blockers are identified, go back to the last step and
+        create a new release candidate after resolving all the issues.
+    *   New features are not allowed to be added to the release branch after the
+        first release candidate is created.
+1.  Push the release candidate as the official release if no further release
+    blockers are found
+    *   For patch releases, push the release at least two business days after
+        the last release candidate is out.
+    *   For major and minor releases, push the release two business days after
+        the last release candidate is out, but not earlier than one week after
+        the first release candidate is out.
+    *   The release is only pushed on a day where the next day is a business
+        day.
+    *   The release is announced on
+        [bazel-discuss](https://groups.google.com/g/bazel-discuss){: .external},
+        the Bazel team monitors and addresses community bug reports for the new
+     release.
+
+## Report regressions {:#report-regressions}
+
+If a user finds a regression in a new Bazel release, release candidate or even
+Bazel at HEAD, please file a bug on
+[GitHub](https://github.com/bazelbuild/bazel/issues){: .external}. You can use
+Bazelisk to bisect the culprit commit and include this information in the bug
+report.
+
+For example, if your build succeeds with Bazel 6.1.0 but fails with the second
+release candidate of 6.2.0, you can do bisect via
+
+```bash
+bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
+```
+
+You can set `BAZELISK_SHUTDOWN` or `BAZELISK_CLEAN` environment variable to run
+corresponding bazel commands to reset the build state if it's needed to
+reproduce the issue. For more details, check out documentation about Bazelisk
+[bisect feature] (https://github.com/bazelbuild/bazelisk#--bisect){: .external}.
+
+Remember to upgrade Bazelisk to the latest version to use the bisect
+feature.
+
+## Rule compatibility {:#rule-compatibility}
+
+If you are a rule authors and want to maintain compatibility with different
+Bazel versions, please check out the [Rule
+Compatibility](/release/rule-compatibility) page.
\ No newline at end of file
diff --git a/site/en/release/rule-compatibility.md b/site/en/release/rule-compatibility.md
new file mode 100644
index 00000000000000..56f9c4303c74d0
--- /dev/null
+++ b/site/en/release/rule-compatibility.md
@@ -0,0 +1,91 @@
+Project: /_project.yaml
+Book: /_book.yaml
+
+# Rule Compatibility
+
+{% include "_buttons.html" %}
+
+Bazel Starlark rules can break compatibility with Bazel LTS releases in the
+following two scenarios:
+
+1.  The rule breaks compatibility with future LTS releases because a feature it
+    depends on is removed from Bazel at HEAD.
+1.  The rule breaks compatibility with the current or older LTS releases because
+    a feature it depends on is only available in newer Bazel LTS releases.
+
+Meanwhile, the rule itself can ship incompatible changes for their users as
+well. When combined with breaking changes in Bazel, upgrading the rule version
+and Bazel version can often be a source of frustration for Bazel users. This
+page covers how rules authors should maintain rule compatibility with Bazel to
+make it easier for users to upgrade Bazel and rules.
+
+## Manageable migration process {:#manageable-migration-process}
+
+While it's obviously not feasible to guarantee compatibility between every
+version of Bazel and every version of the rule, our aim is to ensure that the
+migration process remains manageable for Bazel users. A manageable migration
+process is defined as a process where **users are not forced to upgrade the
+rule's major version and Bazel's major version simultaneously**, thereby
+allowing users to handle incompatible changes from one source at a time.
+
+For example, with the following compatibility matrix:
+
+*   Migrating from rules_foo 1.x + Bazel 4.x to rules_foo 2.x + Bazel 5.x is not
+    considered manageable, as the users need to upgrade the major version of
+    rules_foo and Bazel at the same time.
+*   Migrating from rules_foo 2.x + Bazel 5.x to rules_foo 3.x + Bazel 6.x is
+    considered manageable, as the users can first upgrade rules_foo from 2.x to
+    3.x without changing the major Bazel version, then upgrade Bazel from 5.x to
+    6.x.
+
+| | rules_foo 1.x | rules_foo 2.x | rules_foo 3.x | HEAD |
+| --- | --- | --- | --- | --- |
+| Bazel 4.x | ✅ | ❌ | ❌ | ❌ |
+| Bazel 5.x | ❌ | ✅ | ✅ | ❌ |
+| Bazel 6.x | ❌ | ❌ | ✅ | ✅ |
+| HEAD | ❌ | ❌ | ❌ | ✅ |
+
+❌: No version of the major rule version is compatible with the Bazel LTS
+release.
+
+✅: At least one version of the rule is compatible with the latest version of the
+Bazel LTS release.
+
+## Best practices {:#best-practices}
+
+As Bazel rules authors, you can ensure a manageable migration process for users
+by following these best practices:
+
+1.  The rule should follow [Semantic
+    Versioning](https://semver.org/){: .external}: minor versions of the same
+    major version are backward compatible.
+1.  The rule at HEAD should be compatible with the latest Bazel LTS release.
+1.  The rule at HEAD should be compatible with Bazel at HEAD. To achieve this,
+    you can
+    *   Set up your own CI testing with Bazel at HEAD
+    *   Add your project to [Bazel downstream
+        testing](https://github.com/bazelbuild/continuous-integration/blob/master/docs/downstream-testing.md){: .external};
+        the Bazel team files issues to your project if breaking changes in Bazel
+        affect your project, and you must follow our [downstream project
+        policies](https://github.com/bazelbuild/continuous-integration/blob/master/docs/downstream-testing.md#downstream-project-policies){: .external}
+        to address issues timely.
+1.  The latest major version of the rule must be compatible with the latest
+    Bazel LTS release.
+1.  A new major version of the rule should be compatible with the last Bazel LTS
+    release supported by the previous major version of the rule.
+
+Achieving 2. and 3. is the most important task since it allows achieving 4. and
+5.  naturally.
+
+To make it easier to keep compatibility with both Bazel at HEAD and the latest
+Bazel LTS release, rules authors can:
+
+*   Request backward-compatible features to be back-ported to the latest LTS
+    release, check out [release process](/release#release-procedure-policies)
+    for more details.
+*   Use [bazel_features](https://github.com/bazel-contrib/bazel_features){: .external}
+    to do Bazel feature detection.
+
+In general, with the recommended approaches, rules should be able to migrate for
+Bazel incompatible changes and make use of new Bazel features at HEAD without
+dropping compatibility with the latest Bazel LTS release.
\ No newline at end of file
diff --git a/site/en/release/versioning.md b/site/en/release/versioning.md
deleted file mode 100644
index e387ecb90878a7..00000000000000
--- a/site/en/release/versioning.md
+++ /dev/null
@@ -1,96 +0,0 @@
-Project: /_project.yaml
-Book: /_book.yaml
-
-# Release Versioning
-
-{% include "_buttons.html" %}
-
-Bazel 4.0 and higher provides support for two release tracks: long term support
-(LTS) releases and rolling releases. This page covers versioning in Bazel, the
-types of releases, and the benefits of those releases for Bazel users and
-contributors.
-
-## Understanding versioning on Bazel {:#bazel-versioning}
-
-Bazel uses a _major.minor.patch_ semantic versioning scheme.
-
-* A _major release_ contains features that are not backward compatible with the
-  previous release.
-* A _minor release_ contains new backward-compatible features.
-* A _patch release_ contains minor changes and bug fixes.
-
-Using version 3.5.1 as an example, a new release of each type would result in
-these version numbers:
-
-* Major: 4.0
-* Minor: 3.6
-* Patch: 3.5.2
-
-## Bazel's release cycle {:#release-cycle}
-
-Bazel continually publishes rolling releases. Every major version is an LTS
-release. You can choose to follow either release cadence - updating from one
-LTS release to the next, or updating with each minor version release.
-
-The image shows both rolling and LTS releases, and the expected support for
-each.
-
-![Roadmap](/docs/images/roadmap.png "Roadmap")
-
-**Figure 1.** Rolling and LTS releases.
-
-## Release branches {:#release-branches}
-
-Each major version becomes a separate development branch on release. You can
-receive fixes to critical bugs on that branch without having to update to the
-Bazel release at head. Additional features on your major version branch become
-minor releases and the highest version on the branch is the supported version.
-
-Each Bazel release is paired with a list of recommended rule versions that work
-together and there is strict backwards compatibility within each branch.
-
-## LTS releases {:#lts-releases}
-
-An LTS release is a major version (such as, 4.0) that is supported for 3 years
-after its release.
-A major version is released approximately every nine months.
-
-Ongoing development on a release branch results in minor versions.
-
-You can choose to pin your project to a major release and update to a newer
-version in your own time. This gives you time to preview upcoming changes and
-adapt to them in advance.
-
-## Rolling releases {:#rolling-releases}
-
-Rolling releases are periodically cut from Bazel's main branch.
-This release cadence involves a continuous delivery of preview releases of the
-next major Bazel version, which are in sync with Google’s internal Blaze
-releases.
-
-Note that a new rolling release can contain breaking changes that are
-incompatible with previous releases.
-
-Rolling releases are tested on Bazel's test suite on Bazel CI and
-Google’s internal test suite. Incompatible flags may be
-used to ease the burden of migrating to new functionality, but default behaviors
-may change with any rolling release. (You can also use rolling releases to
-preview the next LTS version. For example, `5.0.0-pre.20210604.6` is based on a
-candidate cut on 2021-06-04 and represents a milestone towards the 5.0 LTS
-release.)
-
-You can download the latest rolling release from
-[GitHub](https://github.com/bazelbuild/bazel/releases){: .external}.
-Alternatively, you can set up
-[Bazelisk v1.9.0](https://github.com/bazelbuild/bazelisk/releases/tag/v1.9.0){: .external}
-(or later) to use a specific version name or the
-“rolling” identifier, which uses the most recent rolling release. For more
-details, see the
-[Bazelisk documentation](https://github.com/bazelbuild/bazelisk#how-does-bazelisk-know-which-bazel-version-to-run){: .external}.
-
-## Updating versions {:#updating-versions}
-
-* For more information on updating your Bazel version, see
-  [Updating Bazel](/install/bazelisk).
-* For more information on contributing updates to new Bazel releases, see
-  [Contributing to Bazel](/contribute).
diff --git a/site/en/remote/bep-glossary.md b/site/en/remote/bep-glossary.md
index ade9185c76b0fa..678f6ac9deff7a 100644
--- a/site/en/remote/bep-glossary.md
+++ b/site/en/remote/bep-glossary.md
@@ -142,7 +142,7 @@ indicates which representation it conveys; three such events appear in the BEP:
   invocation policy applied.
 * `"tool"`: Populated from the `--experimental_tool_command_line` option. This
   is useful to convey the command-line of a tool wrapping Bazel through the BEP.
-  This could be a base64-encoded `CommandLine` binary protocol buffer messsage
+  This could be a base64-encoded `CommandLine` binary protocol buffer message
   which is used directly, or a string which is parsed but not interpreted (as
   the tool's options may differ from Bazel's).
 
diff --git a/site/en/remote/cache-remote.md b/site/en/remote/cache-remote.md
index 6d583a0a6b951d..bab3ebf3cc761c 100644
--- a/site/en/remote/cache-remote.md
+++ b/site/en/remote/cache-remote.md
@@ -152,7 +152,7 @@ element containing all of the information from the action key, Thus, if the
 logs are identical then so are the action cache keys.
 
 To compare logs for two builds that are not sharing cache hits as expected,
-do the folowing:
+do the following:
 
 1. Get the execution logs from each build and store them as `/tmp/exec1.log` and
    `/tmp/exec2.log`.
diff --git a/site/en/remote/multiplex.md b/site/en/remote/multiplex.md
index 9491289a6b2e6c..f7c0bee538b2c3 100644
--- a/site/en/remote/multiplex.md
+++ b/site/en/remote/multiplex.md
@@ -73,7 +73,7 @@ strategy needs to be specified, either at the ruleset level (for example,
 example, `--dynamic_local_strategy=worker,standalone`.) No additional flags are
 necessary, and `supports-multiplex-workers` takes precedence over
 `supports-workers`, if both are set. You can turn off multiplex workers
-globally by passing `--noexperimental_worker_multiplex`.
+globally by passing `--noworker_multiplex`.
 
 A ruleset is encouraged to use multiplex workers if possible,  to reduce memory
 pressure and improve performance. However, multiplex workers are not currently
diff --git a/site/en/rules/index.md b/site/en/rules/index.md
index de01aaf1e5a722..a9a676af1333b9 100644
--- a/site/en/rules/index.md
+++ b/site/en/rules/index.md
@@ -25,7 +25,7 @@ Here is a selection of recommended rules:
 * [JavaScript / NodeJS](https://github.com/bazelbuild/rules_nodejs){: .external}
 * [Kubernetes](https://github.com/bazelbuild/rules_k8s){: .external}
 * [Maven dependency management](https://github.com/bazelbuild/rules_jvm_external){: .external}
-* [Objective C](/docs/bazel-and-apple)
+* [Objective-C](/docs/bazel-and-apple)
 * [Package building](https://github.com/bazelbuild/rules_pkg){: .external}
 * [Protocol Buffers](https://github.com/bazelbuild/rules_proto#protobuf-rules-for-bazel){: .external}
 * [Python](https://github.com/bazelbuild/rules_python){: .external}
diff --git a/site/en/rules/language.md b/site/en/rules/language.md
index 76c33715fa726a..cf800cd0ea9591 100644
--- a/site/en/rules/language.md
+++ b/site/en/rules/language.md
@@ -41,8 +41,8 @@ types are supported:
 * [None](lib/globals#None)
 * [bool](lib/bool)
 * [dict](lib/dict)
-* [tuple](lib/globals#tuple)
-* function
+* [tuple](lib/tuple)
+* [function](lib/function)
 * [int](lib/int)
 * [list](lib/list)
 * [string](lib/string)
diff --git a/site/en/run/bazelrc.md b/site/en/run/bazelrc.md
index 0e0518aae15e63..e796a1d4502434 100644
--- a/site/en/run/bazelrc.md
+++ b/site/en/run/bazelrc.md
@@ -105,7 +105,14 @@ line specifies when these defaults are applied:
 
 -   `startup`: startup options, which go before the command, and are described
     in `bazel help startup_options`.
--   `common`: options that apply to all Bazel commands.
+-   `common`: options that should be applied to all Bazel commands that support
+    them. If a command does not support an option specified in this way, the
+    option is ignored so long as it is valid for *some* other Bazel command.
+    Note that this only applies to option names: If the current command accepts
+    an option with the specified name, but doesn't support the specified value,
+    it will fail.
+-   `always`: options that apply to all Bazel commands. If a command does not
+    support an option specified in this way, it will fail.
 -   _`command`_: Bazel command, such as `build` or `query` to which the options
     apply. These options also apply to all commands that inherit from the
     specified command. (For example, `test` inherits from `build`.)
diff --git a/site/en/run/client-server.md b/site/en/run/client-server.md
index 22a88af1eef98e..0f2ce15aa65dfb 100644
--- a/site/en/run/client-server.md
+++ b/site/en/run/client-server.md
@@ -17,17 +17,24 @@ based on the output base, which by default is determined by the path of the base
 workspace directory and your userid, so if you build in multiple workspaces,
 you'll have multiple output bases and thus multiple Bazel server processes.
 Multiple users on the same workstation can build concurrently in the same
-workspace because their output bases will differ (different userids). If the
-client cannot find a running server instance, it starts a new one. The server
-process will stop after a period of inactivity (3 hours, by default, which can
-be modified using the startup option `--max_idle_secs`).
-
-For the most part, the fact that there is a server running is invisible to the
-user, but sometimes it helps to bear this in mind. For example, if you're
-running scripts that perform a lot of automated builds in different directories,
-it's important to ensure that you don't accumulate a lot of idle servers; you
-can do this by explicitly shutting them down when you're finished with them, or
-by specifying a short timeout period.
+workspace because their output bases will differ (different userids).
+
+If the client cannot find a running server instance, it starts a new one. It
+does this by checking if the output base already exists, implying the blaze
+archive has already been unpacked. Otherwise if the output base doesn't exist,
+the client unzips the archive's files and sets their `mtime`s to a date 9 years
+in the future. Once installed, the client confirms that the `mtime`s of the
+unzipped files are equal to the far off date to ensure no installation tampering
+has occurred.
+
+The server process will stop after a period of inactivity (3 hours, by default,
+which can be modified using the startup option `--max_idle_secs`). For the most
+part, the fact that there is a server running is invisible to the user, but
+sometimes it helps to bear this in mind. For example, if you're running scripts
+that perform a lot of automated builds in different directories, it's important
+to ensure that you don't accumulate a lot of idle servers; you can do this by
+explicitly shutting them down when you're finished with them, or by specifying
+a short timeout period.
 
 The name of a Bazel server process appears in the output of `ps x` or `ps -e f`
 as bazel(dirname), where _dirname_ is the basename of the
diff --git a/site/en/start/cpp.md b/site/en/start/cpp.md
index 851e4c4974fa47..2c014367b94ee2 100644
--- a/site/en/start/cpp.md
+++ b/site/en/start/cpp.md
@@ -192,9 +192,7 @@ This results in a printed “`Hello world`” message.
 
 Here’s the dependency graph of Stage 1:
 
-![Dependency graph for hello-world displays a single target with a single source file.]
-(/docs/images/cpp-tutorial-stage1.png "Dependency graph for hello-world displays
-a single target with a single source file.")
+![Dependency graph for hello-world displays a single target with a single source file.](/docs/images/cpp-tutorial-stage1.png "Dependency graph for hello-world displays a single target with a single source file.")
 
 
 ### Summary: stage 1
@@ -278,10 +276,10 @@ bazel-bin/main/hello-world
 If you now modify `hello-greet.cc` and rebuild the project, Bazel only recompiles
 that file.
 
-Looking at the dependency graph, you can see that hello-world depends on the
-same inputs as it did before, but the structure of the build is different:
+Looking at the dependency graph, you can see that `hello-world` depends on an extra input
+named `hello-greet`:
 
-![Dependency graph for `hello-world` displays structure changes after modification to the file.](/docs/images/cpp-tutorial-stage2.png "Dependency graph for `hello-world` displays structure changes after modification to the file.")
+![Dependency graph for `hello-world` displays dependency changes after modification to the file.](/docs/images/cpp-tutorial-stage2.png "Dependency graph for `hello-world` displays dependency changes after modification to the file.")
 
 ### Summary: stage 2
 
diff --git a/site/en/versions/_toc.yaml b/site/en/versions/_toc.yaml
index fd1a0a63419167..e5bd08599f4f89 100644
--- a/site/en/versions/_toc.yaml
+++ b/site/en/versions/_toc.yaml
@@ -1,4 +1,6 @@
 toc:
+- label: "6.2"
+  path: /versions/6.2.0
 - label: "6.1"
   path: /versions/6.1.0
 - label: "6.0"
@@ -6,4 +8,4 @@ toc:
 - label: "5.4.1"
   path: https://docs.bazel.build/versions/5.4.1/bazel-overview.html
 - label: "4.2.4"
-  path: https://docs.bazel.build/versions/4.2.4/bazel-overview.html
+  path: https://docs.bazel.build/versions/4.2.4/bazel-overview.html
\ No newline at end of file
diff --git a/src/BUILD b/src/BUILD
index 0913b95ad09fbf..f39900d71fa186 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -23,7 +23,8 @@ md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@"
         "//src/main/tools:process-wrapper",
         "//src/main/tools:linux-sandbox",
         "//tools/osx:xcode-locator",
-        ":platforms_archive",
+        "//:platforms-srcs",
+        "//:rules_java-srcs",
     ] + select({
         "//src/conditions:windows": [],
         "//conditions:default": [
@@ -236,7 +237,8 @@ genrule(
     srcs = ([":embedded_tools" + suffix + ".zip"] if embed else []) + [
         "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer_deploy.jar",
         "install_base_key" + suffix,
-        ":platforms_archive",
+        "//:platforms-srcs",
+        "//:rules_java-srcs",
         # Non-ordered items follow:
         "//src/main/java/net/starlark/java/eval:cpu_profiler",
         "//src/main/tools:build-runfiles",
@@ -269,15 +271,6 @@ genrule(
     }),
 )
 
-genrule(
-    name = "platforms_archive",
-    srcs = ["@platforms//:srcs"],
-    outs = ["platforms.zip"],
-    # Removing the WORKSPACE file since local_repository creates it no matter what and leaving
-    # it there would make the zip nondeterministic.
-    cmd = "zip -qX $@ $$(echo $(SRCS) | xargs -n 1 | grep -v '.*/WORKSPACE$$' | sort | xargs)",
-)
-
 [genrule(
     name = "bazel-bin" + suffix,
     srcs = [
@@ -559,41 +552,33 @@ release_archive(
 filegroup(
     name = "test_repos",
     srcs = [
-        "@android_gmaven_r8_for_testing//jar:file",
+        "@android_gmaven_r8//jar:file",
         "@android_tools_for_testing//:WORKSPACE",
         "@bazel_skylib//:WORKSPACE",
         "@com_google_protobuf//:WORKSPACE",
         "@remote_coverage_tools//:WORKSPACE",
-        "@remote_java_tools_darwin_arm64_for_testing//:WORKSPACE",
-        "@remote_java_tools_darwin_x86_64_for_testing//:WORKSPACE",
-        "@remote_java_tools_for_testing//:WORKSPACE",
-        "@remote_java_tools_linux_for_testing//:WORKSPACE",
-        "@remote_java_tools_test//:WORKSPACE",
-        "@remote_java_tools_test_darwin_arm64//:WORKSPACE",
-        "@remote_java_tools_test_darwin_x86_64//:WORKSPACE",
-        "@remote_java_tools_test_linux//:WORKSPACE",
-        "@remote_java_tools_test_windows//:WORKSPACE",
-        "@remote_java_tools_windows_for_testing//:WORKSPACE",
-        "@remotejdk11_linux_aarch64_for_testing//:WORKSPACE",
-        "@remotejdk11_linux_for_testing//:WORKSPACE",
-        "@remotejdk11_linux_ppc64le_for_testing//:WORKSPACE",
-        "@remotejdk11_linux_s390x_for_testing//:WORKSPACE",
-        "@remotejdk11_macos_aarch64_for_testing//:WORKSPACE",
-        "@remotejdk11_macos_for_testing//:WORKSPACE",
-        "@remotejdk11_win_arm64_for_testing//:WORKSPACE",
-        "@remotejdk11_win_for_testing//:WORKSPACE",
+        "@remote_java_tools//:GenClass",
+        "@remote_java_tools_darwin_arm64//:java_tools/src/tools/singlejar/singlejar_local",
+        "@remote_java_tools_darwin_x86_64//:java_tools/src/tools/singlejar/singlejar_local",
+        "@remote_java_tools_linux//:java_tools/src/tools/singlejar/singlejar_local",
+        "@remote_java_tools_windows//:java_tools/src/tools/singlejar/singlejar_local.exe",
+        "@remotejdk11_linux//:WORKSPACE",
+        "@remotejdk11_linux_aarch64//:WORKSPACE",
+        "@remotejdk11_linux_ppc64le//:WORKSPACE",
+        "@remotejdk11_linux_s390x//:WORKSPACE",
+        "@remotejdk11_macos//:WORKSPACE",
+        "@remotejdk11_macos_aarch64//:WORKSPACE",
+        "@remotejdk11_win//:WORKSPACE",
+        "@remotejdk11_win_arm64//:WORKSPACE",
         "@rules_cc//:WORKSPACE",
         "@rules_java//:WORKSPACE",
+        "@rules_java_builtin_for_testing//:WORKSPACE",
         "@rules_pkg//:WORKSPACE",
         "@rules_proto//:WORKSPACE",
         "@rules_python//:WORKSPACE",
         "@rules_testing//:WORKSPACE.bazel",
     ] + [
-        "@openjdk%s_%s_archive//:WORKSPACE" % (version, os)
-        for version in ("17", "20")
-        for os in ("darwin", "darwin_aarch64", "linux", "windows") + (("linux_s390x", "windows_arm64") if version != "20" else ())
-    ] + [
-        "@remotejdk%s_%s_for_testing//:WORKSPACE" % (version, os)
+        "@remotejdk%s_%s//:WORKSPACE" % (version, os)
         for version in ("17", "20")
         for os in ("macos", "macos_aarch64", "linux", "win") + (("linux_s390x", "win_arm64") if version != "20" else ())
     ],
diff --git a/src/MODULE.tools b/src/MODULE.tools
index 2081aa437be655..593e6216211a0c 100644
--- a/src/MODULE.tools
+++ b/src/MODULE.tools
@@ -1,7 +1,7 @@
 module(name = "bazel_tools")
 
 bazel_dep(name = "rules_cc", version = "0.0.6")
-bazel_dep(name = "rules_java", version = "5.5.0")
+bazel_dep(name = "rules_java", version = "6.1.1")
 bazel_dep(name = "rules_license", version = "0.0.3")
 bazel_dep(name = "rules_proto", version = "4.0.0")
 bazel_dep(name = "rules_python", version = "0.4.0")
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
index bbce57e3466ea1..062c22dc443361 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
@@ -295,7 +295,7 @@ private static void setLocations(JavacFileManager fileManager, BlazeJavacArgumen
                 .filter(f -> f.getFileName().toString().equals("module-info.java"))
                 .collect(toImmutableList());
         if (moduleInfos.size() == 1) {
-          sourcePath = ImmutableList.of(getOnlyElement(moduleInfos).getParent());
+          sourcePath = ImmutableList.of(getOnlyElement(moduleInfos).toAbsolutePath().getParent());
         }
       }
       fileManager.setLocationFromPaths(StandardLocation.SOURCE_PATH, sourcePath);
@@ -401,14 +401,14 @@ protected Class findClass(String name) throws ClassNotFoundException {
                   || name.startsWith("com.google.common.collect.")
                   || name.startsWith("com.google.common.base.")
                   || name.startsWith("com.google.common.graph.")
+                  || name.startsWith("com.google.common.regex.")
                   || name.startsWith("org.checkerframework.shaded.dataflow.")
                   || name.startsWith("org.checkerframework.errorprone.dataflow.")
                   || name.startsWith("com.sun.source.")
                   || name.startsWith("com.sun.tools.")
                   || name.startsWith("com.google.devtools.build.buildjar.javac.statistics.")
                   || name.startsWith("dagger.model.")
-                  // TODO(b/191812726): Include dagger.spi.model before releasing it to SPI users.
-                  || (name.startsWith("dagger.spi.") && !name.startsWith("dagger.spi.model."))
+                  || name.startsWith("dagger.spi.")
                   || builtinProcessors.contains(name)) {
                 return Class.forName(name);
               }
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Bazel.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Bazel.java
index 2b1372be719830..442ebc1f71a363 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Bazel.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Bazel.java
@@ -23,6 +23,7 @@
 import com.google.testing.junit.runner.sharding.ShardingFilters;
 import com.google.testing.junit.runner.util.MemoizingSupplier;
 import java.io.PrintStream;
+import java.util.Collections;
 import java.util.Set;
 import java.util.function.Supplier;
 import org.junit.runner.Request;
@@ -83,7 +84,7 @@ public JUnit4Runner runner() {
         stdoutStream,
         config,
         setOfRunListeners,
-        Set.of());
+        Collections.emptySet());
   }
 
   /** A builder for instantiating {@link JUnit4Bazel}. */
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
index c849abdefe2b7e..2333635e088029 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
@@ -31,6 +31,8 @@
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.nio.file.Path;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Set;
 import java.util.function.Supplier;
 import javax.annotation.Nullable;
@@ -127,17 +129,20 @@ Set setOfRunListeners(
       JUnit4Config config,
       Supplier testSuiteModelSupplier,
       CancellableRequestFactory cancellableRequestFactory) {
-    return Set.of(
+    Set listeners = new HashSet<>();
+    listeners.add(
         new JUnit4TestStackTraceListener(
-            new SignalHandlers(SignalHandlers.createRealHandlerInstaller()), System.err),
+            new SignalHandlers(SignalHandlers.createRealHandlerInstaller()), System.err));
+    listeners.add(
         new JUnit4TestXmlListener(
             testSuiteModelSupplier,
             cancellableRequestFactory,
             new SignalHandlers(SignalHandlers.createRealHandlerInstaller()),
             new ProvideXmlStreamFactory(() -> config).get(),
-            System.err),
-        new JUnit4TestNameListener(provideCurrentRunningTest()),
-        JUnit4RunnerBaseModule.provideTextListener(stdout()));
+            System.err));
+    listeners.add(new JUnit4TestNameListener(provideCurrentRunningTest()));
+    listeners.add(JUnit4RunnerBaseModule.provideTextListener(stdout()));
+    return Collections.unmodifiableSet(listeners);
   }
 
   CancellableRequestFactory cancellableRequestFactory() {
diff --git a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/BUILD b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/BUILD
index 1e611dd14256ca..a08922b88839ae 100644
--- a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/BUILD
+++ b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/BUILD
@@ -2,7 +2,9 @@ load("@rules_java//java:defs.bzl", "java_library", "java_test")
 
 # Description:
 #   Tests for SingleJar
-package(default_visibility = ["//src/java_tools/singlejar:singlejar_package_group"])
+package(
+    default_applicable_licenses = ["//:license"],
+)
 
 java_library(
     name = "libSingleJarTesting",
diff --git a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/FakeZipFile.java b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/FakeZipFile.java
index 05eaa07970dcbe..2f9de760749578 100644
--- a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/FakeZipFile.java
+++ b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/FakeZipFile.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.singlejar;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.google.common.truth.Truth.assertWithMessage;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import com.google.errorprone.annotations.CanIgnoreReturnValue;
@@ -25,9 +24,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
@@ -136,12 +133,6 @@ public void assertNext(ZipInputStream zipInput) throws IOException {
 
   private final List entries = new ArrayList<>();
 
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, String content) {
-    entries.add(new FakeZipEntry(name, null, content, null, EntryMode.DONT_CARE));
-    return this;
-  }
-
   @CanIgnoreReturnValue
   public FakeZipFile addEntry(String name, String content, boolean compressed) {
     entries.add(new FakeZipEntry(name, null, content, null,
@@ -149,66 +140,8 @@ public FakeZipFile addEntry(String name, String content, boolean compressed) {
     return this;
   }
 
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, Date date, String content) {
-    entries.add(new FakeZipEntry(name, date, content, null, EntryMode.DONT_CARE));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, Date date, String content, boolean compressed) {
-    entries.add(new FakeZipEntry(name, date, content, null,
-        compressed ? EntryMode.EXPECT_DEFLATE : EntryMode.EXPECT_STORED));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, ByteValidator content) {
-    entries.add(new FakeZipEntry(name, null, content, null, EntryMode.DONT_CARE));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, ByteValidator content, boolean compressed) {
-    entries.add(new FakeZipEntry(name, null, content, null,
-        compressed ? EntryMode.EXPECT_DEFLATE : EntryMode.EXPECT_STORED));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, Date date, ByteValidator content) {
-    entries.add(new FakeZipEntry(name, date, content, null, EntryMode.DONT_CARE));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, Date date, ByteValidator content, boolean compressed) {
-    entries.add(new FakeZipEntry(name, date, content, null,
-        compressed ? EntryMode.EXPECT_DEFLATE : EntryMode.EXPECT_STORED));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, byte[] extra) {
-    entries.add(new FakeZipEntry(name, null, (String) null, extra, EntryMode.DONT_CARE));
-    return this;
-  }
-
-  @CanIgnoreReturnValue
-  public FakeZipFile addEntry(String name, byte[] extra, boolean compressed) {
-    entries.add(new FakeZipEntry(name, null, (String) null, extra,
-        compressed ? EntryMode.EXPECT_DEFLATE : EntryMode.EXPECT_STORED));
-    return this;
-  }
-
   private byte[] preamble = null;
 
-  @CanIgnoreReturnValue
-  public FakeZipFile addPreamble(byte[] contents) {
-    preamble = Arrays.copyOf(contents, contents.length);
-    return this;
-  }
-
   private int getUnsignedShort(byte[] source, int offset) {
     int a = source[offset + 0] & 0xff;
     int b = source[offset + 1] & 0xff;
@@ -237,55 +170,4 @@ public void assertSame(byte[] data) throws IOException {
     count = getUnsignedShort(data, data.length-12);
     assertThat(count).isEqualTo(entries.size());
   }
-
-  /**
-   * Assert that {@code expected} is the same zip file as {@code actual}. It is similar to
-   * {@link org.junit.Assert#assertArrayEquals(byte[], byte[])} but should use a more
-   * helpful error message.
-   */
-  public static void assertSame(byte[] expected, byte[] actual) throws IOException {
-    // First parse the zip files, then compare to have explicit comparison messages.
-    ZipInputStream expectedZip = new ZipInputStream(new ByteArrayInputStream(expected));
-    ZipInputStream actualZip = new ZipInputStream(new ByteArrayInputStream(actual));
-    StringBuffer actualFileList = new StringBuffer();
-    StringBuffer expectedFileList = new StringBuffer();
-    Map actualEntries = new HashMap();
-    Map expectedEntries = new HashMap();
-    Map actualEntryContents = new HashMap();
-    Map expectedEntryContents = new HashMap();
-    parseZipEntry(expectedZip, expectedFileList, expectedEntries, expectedEntryContents);
-    parseZipEntry(actualZip, actualFileList, actualEntries, actualEntryContents);
-    // Compare the ordered file list first.
-    assertThat(actualFileList.toString()).isEqualTo(expectedFileList.toString());
-
-    // Then compare each entry.
-    for (String name : expectedEntries.keySet()) {
-      ZipEntry expectedEntry = expectedEntries.get(name);
-      ZipEntry actualEntry = actualEntries.get(name);
-      assertWithMessage("Time differs for " + name)
-          .that(actualEntry.getTime())
-          .isEqualTo(expectedEntry.getTime());
-      assertWithMessage("Extraneous content differs for " + name)
-          .that(actualEntry.getExtra())
-          .isEqualTo(expectedEntry.getExtra());
-      assertWithMessage("Content differs for " + name)
-          .that(actualEntryContents.get(name))
-          .isEqualTo(expectedEntryContents.get(name));
-    }
-
-    // Finally do a binary array comparison to be sure that test fails if files are different in
-    // some way we don't test.
-    assertThat(actual).isEqualTo(expected);
-  }
-
-  private static void parseZipEntry(ZipInputStream expectedZip, StringBuffer expectedFileList,
-      Map expectedEntries, Map expectedEntryContents)
-      throws IOException {
-    ZipEntry expectedEntry;
-    while ((expectedEntry = expectedZip.getNextEntry()) != null) {
-      expectedFileList.append(expectedEntry.getName()).append("\n");
-      expectedEntries.put(expectedEntry.getName(), expectedEntry);
-      expectedEntryContents.put(expectedEntry.getName(), readZipEntryContent(expectedZip));
-    }
-  }
 }
diff --git a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipFactory.java b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipFactory.java
index da87d08b7d39cc..d2f45c32280872 100644
--- a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipFactory.java
+++ b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipFactory.java
@@ -68,12 +68,6 @@ public ZipFactory addFile(String name, String content, boolean compressed) {
     return this;
   }
 
-  @CanIgnoreReturnValue
-  public ZipFactory addFile(String name, byte[] content, boolean compressed) {
-    addEntry(name, content.clone(), compressed);
-    return this;
-  }
-
   public byte[] toByteArray() {
     try {
       ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipTester.java b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipTester.java
index f2e8b3a8445dd6..ac18f593e4dd4d 100644
--- a/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipTester.java
+++ b/src/java_tools/singlejar/javatests/com/google/devtools/build/singlejar/ZipTester.java
@@ -228,7 +228,7 @@ private void readEntry() throws IOException {
 
     String name = new String(filename, "UTF-8");
     for (int i = 0; i < filename.length; i++) {
-      if ((filename[i] < ' ') || (filename[i] > 127)) {
+      if ((filename[i] < ' ')) {
         warn(entryDesc + ": file name has unexpected non-ascii characters");
       }
     }
diff --git a/src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD b/src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD
index 4c2e10ba5a3e29..95e406e8f74918 100644
--- a/src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD
+++ b/src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD
@@ -2,7 +2,9 @@ load("@rules_java//java:defs.bzl", "java_library", "java_test")
 
 # Description:
 #   Tests for Zip
-package(default_visibility = ["//src/java_tools/singlejar:singlejar_package_group"])
+package(
+    default_applicable_licenses = ["//:license"],
+)
 
 java_library(
     name = "zip_tests",
diff --git a/src/jdeps_modules.golden b/src/jdeps_modules.golden
index 4584f9d392fdfc..5aa0d6085a8ad3 100644
--- a/src/jdeps_modules.golden
+++ b/src/jdeps_modules.golden
@@ -7,5 +7,4 @@ java.naming
 java.sql
 java.xml
 jdk.management
-jdk.sctp
 jdk.unsupported
diff --git a/src/main/cpp/archive_utils.cc b/src/main/cpp/archive_utils.cc
index b20b6cb27eb8fc..a86d803d7b5084 100644
--- a/src/main/cpp/archive_utils.cc
+++ b/src/main/cpp/archive_utils.cc
@@ -11,13 +11,17 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
+#include "src/main/cpp/archive_utils.h"
+
 #include 
 #include 
+#include 
 #include 
+#include   // NOLINT
 #include 
 
-#include "src/main/cpp/archive_utils.h"
 #include "src/main/cpp/blaze_util_platform.h"
+#include "src/main/cpp/startup_options.h"
 #include "src/main/cpp/util/errors.h"
 #include "src/main/cpp/util/exit_code.h"
 #include "src/main/cpp/util/file.h"
@@ -28,6 +32,7 @@
 
 namespace blaze {
 
+using std::set;
 using std::string;
 using std::vector;
 
@@ -99,6 +104,105 @@ struct PartialZipExtractor : public devtools_ijar::ZipExtractorProcessor {
   bool done_ = false;
 };
 
+// Installs Blaze by extracting the embedded data files, iff necessary.
+// The MD5-named install_base directory on disk is trusted; we assume
+// no-one has modified the extracted files beneath this directory once
+// it is in place. Concurrency during extraction is handled by
+// extracting in a tmp dir and then renaming it into place where it
+// becomes visible atomically at the new path.
+ExtractionDurationMillis ExtractData(const string &self_path,
+                                     const vector &archive_contents,
+                                     const string &expected_install_md5,
+                                     const StartupOptions &startup_options,
+                                     LoggingInfo *logging_info) {
+  const string &install_base = startup_options.install_base;
+  // If the install dir doesn't exist, create it, if it does, we know it's good.
+  if (!blaze_util::PathExists(install_base)) {
+    uint64_t st = GetMillisecondsMonotonic();
+    // Work in a temp dir to avoid races.
+    string tmp_install = blaze_util::CreateTempDir(install_base + ".tmp.");
+    ExtractArchiveOrDie(self_path, startup_options.product_name,
+                        expected_install_md5, tmp_install);
+    BlessFiles(tmp_install);
+
+    uint64_t et = GetMillisecondsMonotonic();
+    const ExtractionDurationMillis extract_data_duration(
+        et - st, /*archived_extracted=*/true);
+
+    // Now rename the completed installation to its final name.
+    int attempts = 0;
+    while (attempts < 120) {
+      int result = blaze_util::RenameDirectory(tmp_install, install_base);
+      if (result == blaze_util::kRenameDirectorySuccess ||
+          result == blaze_util::kRenameDirectoryFailureNotEmpty) {
+        // If renaming fails because the directory already exists and is not
+        // empty, then we assume another good installation snuck in before us.
+        blaze_util::RemoveRecursively(tmp_install);
+        break;
+      } else {
+        // Otherwise the install directory may still be scanned by the antivirus
+        // (in case we're running on Windows) so we need to wait for that to
+        // finish and try renaming again.
+        ++attempts;
+        BAZEL_LOG(USER) << "install base directory '" << tmp_install
+                        << "' could not be renamed into place after "
+                        << attempts << " second(s), trying again\r";
+        std::this_thread::sleep_for(std::chrono::seconds(1));
+      }
+    }
+
+    // Give up renaming after 120 failed attempts / 2 minutes.
+    if (attempts == 120) {
+      blaze_util::RemoveRecursively(tmp_install);
+      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+          << "install base directory '" << tmp_install
+          << "' could not be renamed into place: "
+          << blaze_util::GetLastErrorString();
+    }
+    return extract_data_duration;
+  } else {
+    // This would be detected implicitly below, but checking explicitly lets
+    // us give a better error message.
+    if (!blaze_util::IsDirectory(install_base)) {
+      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+          << "install base directory '" << install_base
+          << "' could not be created. It exists but is not a directory.";
+    }
+    blaze_util::Path install_dir(install_base);
+    // Check that all files are present and have timestamps from BlessFiles().
+    std::unique_ptr mtime(
+        blaze_util::CreateFileMtime());
+    for (const auto &it : archive_contents) {
+      blaze_util::Path path = install_dir.GetRelative(it);
+      if (!mtime->IsUntampered(path)) {
+        BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+            << "corrupt installation: file '" << path.AsPrintablePath()
+            << "' is missing or modified.  Please remove '" << install_base
+            << "' and try again.";
+      }
+    }
+    // Also check that the installed files claim to match this binary.
+    // We check this afterward because the above diagnostic is better
+    // for a missing install_base_key file.
+    blaze_util::Path key_path = install_dir.GetRelative("install_base_key");
+    string on_disk_key;
+    if (!blaze_util::ReadFile(key_path, &on_disk_key)) {
+      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+          << "cannot read '" << key_path.AsPrintablePath()
+          << "': " << blaze_util::GetLastErrorString();
+    }
+    if (on_disk_key != expected_install_md5) {
+      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+          << "The install_base directory '" << install_base
+          << "' contains a different " << startup_options.product_name
+          << " version (found " << on_disk_key << " but this binary is "
+          << expected_install_md5
+          << ").  Remove it or specify a different --install_base.";
+    }
+    return ExtractionDurationMillis();
+  }
+}
+
 void DetermineArchiveContents(const string &archive_path, vector *files,
                               string *install_md5) {
   PartialZipExtractor pze;
@@ -146,6 +250,58 @@ void ExtractArchiveOrDie(const string &archive_path, const string &product_name,
   }
 }
 
+void BlessFiles(const string &embedded_binaries) {
+  blaze_util::Path embedded_binaries_(embedded_binaries);
+
+  // Set the timestamps of the extracted files to the future and make sure (or
+  // at least as sure as we can...) that the files we have written are actually
+  // on the disk.
+
+  vector extracted_files;
+
+  // Walks the temporary directory recursively and collects full file paths.
+  blaze_util::GetAllFilesUnder(embedded_binaries, &extracted_files);
+
+  std::unique_ptr mtime(blaze_util::CreateFileMtime());
+  set synced_directories;
+  for (const auto &f : extracted_files) {
+    blaze_util::Path it(f);
+
+    // Set the time to a distantly futuristic value so we can observe tampering.
+    // Note that keeping a static, deterministic timestamp, such as the default
+    // timestamp set by unzip (1970-01-01) and using that to detect tampering is
+    // not enough, because we also need the timestamp to change between Bazel
+    // releases so that the metadata cache knows that the files may have
+    // changed. This is essential for the correctness of actions that use
+    // embedded binaries as artifacts.
+    if (!mtime->SetToDistantFuture(it)) {
+      string err = blaze_util::GetLastErrorString();
+      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+          << "failed to set timestamp on '" << it.AsPrintablePath()
+          << "': " << err;
+    }
+
+    blaze_util::SyncFile(it);
+
+    blaze_util::Path directory = it.GetParent();
+
+    // Now walk up until embedded_binaries and sync every directory in between.
+    // synced_directories is used to avoid syncing the same directory twice.
+    // The !directory.empty() and !blaze_util::IsRootDirectory(directory)
+    // conditions are not strictly needed, but it makes this loop more robust,
+    // because otherwise, if due to some glitch, directory was not under
+    // embedded_binaries, it would get into an infinite loop.
+    while (directory != embedded_binaries_ && !directory.IsEmpty() &&
+           !blaze_util::IsRootDirectory(directory) &&
+           synced_directories.insert(directory).second) {
+      blaze_util::SyncFile(directory);
+      directory = directory.GetParent();
+    }
+  }
+
+  blaze_util::SyncFile(embedded_binaries_);
+}
+
 void ExtractBuildLabel(const string &archive_path, string *build_label) {
   PartialZipExtractor pze;
   *build_label = pze.UnzipUntil(archive_path, "build-label.txt");
diff --git a/src/main/cpp/archive_utils.h b/src/main/cpp/archive_utils.h
index f970080a10b95d..18856ab67dbddd 100644
--- a/src/main/cpp/archive_utils.h
+++ b/src/main/cpp/archive_utils.h
@@ -18,6 +18,9 @@
 #include 
 #include 
 
+#include "src/main/cpp/startup_options.h"
+#include "src/main/cpp/util/logging.h"
+
 namespace blaze {
 
 // Determines the contents of the archive, storing the names of the contained
@@ -26,6 +29,77 @@ void DetermineArchiveContents(const std::string &archive_path,
                               std::vector *files,
                               std::string *install_md5);
 
+struct DurationMillis {
+ public:
+  const uint64_t millis;
+
+  DurationMillis() : millis(kUnknownDuration) {}
+  DurationMillis(const uint64_t ms) : millis(ms) {}
+
+  bool IsUnknown() const { return millis == kUnknownDuration; }
+
+ private:
+  // Value representing that a timing event never occurred or is unknown.
+  static constexpr uint64_t kUnknownDuration = 0;
+};
+
+// DurationMillis that tracks if an archive was extracted.
+struct ExtractionDurationMillis : DurationMillis {
+  const bool archive_extracted;
+  ExtractionDurationMillis() : DurationMillis(), archive_extracted(false) {}
+  ExtractionDurationMillis(const uint64_t ms, const bool archive_extracted)
+      : DurationMillis(ms), archive_extracted(archive_extracted) {}
+};
+
+// The reason for a blaze server restart.
+// Keep in sync with logging.proto.
+enum RestartReason {
+  NO_RESTART = 0,
+  NO_DAEMON,
+  NEW_VERSION,
+  NEW_OPTIONS,
+  PID_FILE_BUT_NO_SERVER,
+  SERVER_VANISHED,
+  SERVER_UNRESPONSIVE
+};
+
+// Encapsulates miscellaneous information reported to the server for logging and
+// profiling purposes.
+struct LoggingInfo {
+ public:
+  explicit LoggingInfo(const std::string &binary_path_,
+                       const uint64_t start_time_ms_)
+      : binary_path(binary_path_),
+        start_time_ms(start_time_ms_),
+        restart_reason(NO_RESTART) {}
+
+  void SetRestartReasonIfNotSet(const RestartReason restart_reason_) {
+    if (restart_reason == NO_RESTART) {
+      restart_reason = restart_reason_;
+    }
+  }
+
+  // Path of this binary.
+  const std::string binary_path;
+
+  // The time in ms the binary started up, measured from approximately the time
+  // that "main" was called.
+  const uint64_t start_time_ms;
+
+  // The reason the server was restarted.
+  RestartReason restart_reason;
+};
+
+// Extracts the archive and ensures success via calls to ExtractArchiveOrDie and
+// BlessFiles. If the install base, the location the archive is unpacked,
+// already exists, extraction is skipped. Kills the client if an error is
+// encountered.
+ExtractionDurationMillis ExtractData(
+    const std::string &self_path,
+    const std::vector &archive_contents,
+    const std::string &expected_install_md5,
+    const StartupOptions &startup_options, LoggingInfo *logging_info);
+
 // Extracts the embedded data files in `archive_path` into `output_dir`.
 // It's expected that `output_dir` already exists and that it's a directory.
 // Fails if `expected_install_md5` doesn't match that contained in the archive,
@@ -35,6 +109,13 @@ void ExtractArchiveOrDie(const std::string &archive_path,
                          const std::string &expected_install_md5,
                          const std::string &output_dir);
 
+// Sets the timestamps of the extracted files to the future via
+// blaze_util::IFileMtime::SetToDistanceFuture and ensures that the files we
+// have written are actually on the disk. Later, the blaze client calls
+// blaze_util::IFileMtime::IsUntampered to ensure the files were "blessed" with
+// these distant mtimes.
+void BlessFiles(const std::string &embedded_binaries);
+
 // Retrieves the build label (version string) from `archive_path` into
 // `build_label`.
 void ExtractBuildLabel(const std::string &archive_path,
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc
index 1ef38f81344bbe..63f2e22a0d62c1 100644
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -166,18 +166,6 @@ using std::vector;
 //   connections. It would also not be resilient against a dead server that
 //   left a PID file around.
 
-// The reason for a blaze server restart.
-// Keep in sync with logging.proto.
-enum RestartReason {
-  NO_RESTART = 0,
-  NO_DAEMON,
-  NEW_VERSION,
-  NEW_OPTIONS,
-  PID_FILE_BUT_NO_SERVER,
-  SERVER_VANISHED,
-  SERVER_UNRESPONSIVE
-};
-
 // String string representation of RestartReason.
 static const char *ReasonString(RestartReason reason) {
   switch (reason) {
@@ -203,45 +191,6 @@ static const char *ReasonString(RestartReason reason) {
   return "unknown";
 }
 
-struct DurationMillis {
-  const uint64_t millis;
-
-  DurationMillis() : millis(kUnknownDuration) {}
-  DurationMillis(const uint64_t ms) : millis(ms) {}
-
-  bool IsKnown() const { return millis == kUnknownDuration; }
-
- private:
-  // Value representing that a timing event never occurred or is unknown.
-  static constexpr uint64_t kUnknownDuration = 0;
-};
-
-// Encapsulates miscellaneous information reported to the server for logging and
-// profiling purposes.
-struct LoggingInfo {
-  explicit LoggingInfo(const string &binary_path_,
-                       const uint64_t start_time_ms_)
-      : binary_path(binary_path_),
-        start_time_ms(start_time_ms_),
-        restart_reason(NO_RESTART) {}
-
-  void SetRestartReasonIfNotSet(const RestartReason restart_reason_) {
-    if (restart_reason == NO_RESTART) {
-      restart_reason = restart_reason_;
-    }
-  }
-
-  // Path of this binary.
-  const string binary_path;
-
-  // The time in ms the binary started up, measured from approximately the time
-  // that "main" was called.
-  const uint64_t start_time_ms;
-
-  // The reason the server was restarted.
-  RestartReason restart_reason;
-};
-
 class BlazeServer final {
  public:
   explicit BlazeServer(const StartupOptions &startup_options);
@@ -589,14 +538,14 @@ static void AddLoggingArgs(const LoggingInfo &logging_info,
 
   // The time in ms a command had to wait on a busy Blaze server process.
   // This is part of startup_time.
-  if (command_wait_duration_ms.IsKnown()) {
+  if (command_wait_duration_ms.IsUnknown()) {
     args->push_back("--command_wait_time=" +
                     blaze_util::ToString(command_wait_duration_ms.millis));
   }
 
   // The time in ms spent on extracting the new blaze version.
   // This is part of startup_time.
-  if (extract_data_duration.IsKnown()) {
+  if (extract_data_duration.IsUnknown()) {
     args->push_back("--extract_data_time=" +
                     blaze_util::ToString(extract_data_duration.millis));
   }
@@ -901,155 +850,6 @@ static void StartServerAndConnect(
   delete server_startup;
 }
 
-static void BlessFiles(const string &embedded_binaries) {
-  blaze_util::Path embedded_binaries_(embedded_binaries);
-
-  // Set the timestamps of the extracted files to the future and make sure (or
-  // at least as sure as we can...) that the files we have written are actually
-  // on the disk.
-
-  vector extracted_files;
-
-  // Walks the temporary directory recursively and collects full file paths.
-  blaze_util::GetAllFilesUnder(embedded_binaries, &extracted_files);
-
-  std::unique_ptr mtime(blaze_util::CreateFileMtime());
-  set synced_directories;
-  for (const auto &f : extracted_files) {
-    blaze_util::Path it(f);
-
-    // Set the time to a distantly futuristic value so we can observe tampering.
-    // Note that keeping a static, deterministic timestamp, such as the default
-    // timestamp set by unzip (1970-01-01) and using that to detect tampering is
-    // not enough, because we also need the timestamp to change between Bazel
-    // releases so that the metadata cache knows that the files may have
-    // changed. This is essential for the correctness of actions that use
-    // embedded binaries as artifacts.
-    if (!mtime->SetToDistantFuture(it)) {
-      string err = GetLastErrorString();
-      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-          << "failed to set timestamp on '" << it.AsPrintablePath()
-          << "': " << err;
-    }
-
-    blaze_util::SyncFile(it);
-
-    blaze_util::Path directory = it.GetParent();
-
-    // Now walk up until embedded_binaries and sync every directory in between.
-    // synced_directories is used to avoid syncing the same directory twice.
-    // The !directory.empty() and !blaze_util::IsRootDirectory(directory)
-    // conditions are not strictly needed, but it makes this loop more robust,
-    // because otherwise, if due to some glitch, directory was not under
-    // embedded_binaries, it would get into an infinite loop.
-    while (directory != embedded_binaries_ && !directory.IsEmpty() &&
-           !blaze_util::IsRootDirectory(directory) &&
-           synced_directories.insert(directory).second) {
-      blaze_util::SyncFile(directory);
-      directory = directory.GetParent();
-    }
-  }
-
-  blaze_util::SyncFile(embedded_binaries_);
-}
-
-// Installs Blaze by extracting the embedded data files, iff necessary.
-// The MD5-named install_base directory on disk is trusted; we assume
-// no-one has modified the extracted files beneath this directory once
-// it is in place. Concurrency during extraction is handled by
-// extracting in a tmp dir and then renaming it into place where it
-// becomes visible atomically at the new path.
-static DurationMillis ExtractData(const string &self_path,
-                                  const vector &archive_contents,
-                                  const string &expected_install_md5,
-                                  const StartupOptions &startup_options,
-                                  LoggingInfo *logging_info) {
-  const string &install_base = startup_options.install_base;
-  // If the install dir doesn't exist, create it, if it does, we know it's good.
-  if (!blaze_util::PathExists(install_base)) {
-    uint64_t st = GetMillisecondsMonotonic();
-    // Work in a temp dir to avoid races.
-    string tmp_install = blaze_util::CreateTempDir(install_base + ".tmp.");
-    ExtractArchiveOrDie(self_path, startup_options.product_name,
-                        expected_install_md5, tmp_install);
-    BlessFiles(tmp_install);
-
-    uint64_t et = GetMillisecondsMonotonic();
-    const DurationMillis extract_data_duration(et - st);
-
-    // Now rename the completed installation to its final name.
-    int attempts = 0;
-    while (attempts < 120) {
-      int result = blaze_util::RenameDirectory(tmp_install, install_base);
-      if (result == blaze_util::kRenameDirectorySuccess ||
-          result == blaze_util::kRenameDirectoryFailureNotEmpty) {
-        // If renaming fails because the directory already exists and is not
-        // empty, then we assume another good installation snuck in before us.
-        blaze_util::RemoveRecursively(tmp_install);
-        break;
-      } else {
-        // Otherwise the install directory may still be scanned by the antivirus
-        // (in case we're running on Windows) so we need to wait for that to
-        // finish and try renaming again.
-        ++attempts;
-        BAZEL_LOG(USER) << "install base directory '" << tmp_install
-                        << "' could not be renamed into place after "
-                        << attempts << " second(s), trying again\r";
-        std::this_thread::sleep_for(std::chrono::seconds(1));
-      }
-    }
-
-    // Give up renaming after 120 failed attempts / 2 minutes.
-    if (attempts == 120) {
-      blaze_util::RemoveRecursively(tmp_install);
-      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-          << "install base directory '" << tmp_install
-          << "' could not be renamed into place: " << GetLastErrorString();
-    }
-    return extract_data_duration;
-  } else {
-    // This would be detected implicitly below, but checking explicitly lets
-    // us give a better error message.
-    if (!blaze_util::IsDirectory(install_base)) {
-      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-          << "install base directory '" << install_base
-          << "' could not be created. It exists but is not a directory.";
-    }
-    blaze_util::Path install_dir(install_base);
-    // Check that all files are present and have timestamps from BlessFiles().
-    std::unique_ptr mtime(
-        blaze_util::CreateFileMtime());
-    for (const auto &it : archive_contents) {
-      blaze_util::Path path = install_dir.GetRelative(it);
-      if (!mtime->IsUntampered(path)) {
-        BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-            << "corrupt installation: file '" << path.AsPrintablePath()
-            << "' is missing or modified.  Please remove '" << install_base
-            << "' and try again.";
-      }
-    }
-    // Also check that the installed files claim to match this binary.
-    // We check this afterward because the above diagnostic is better
-    // for a missing install_base_key file.
-    blaze_util::Path key_path = install_dir.GetRelative("install_base_key");
-    string on_disk_key;
-    if (!blaze_util::ReadFile(key_path, &on_disk_key)) {
-      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-          << "cannot read '" << key_path.AsPrintablePath()
-          << "': " << GetLastErrorString();
-    }
-    if (on_disk_key != expected_install_md5) {
-      BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
-          << "The install_base directory '" << install_base
-          << "' contains a different " << startup_options.product_name
-          << " version (found " << on_disk_key << " but this binary is "
-          << expected_install_md5
-          << ").  Remove it or specify a different --install_base.";
-    }
-    return DurationMillis();
-  }
-}
-
 static bool IsVolatileArg(const string &arg) {
   // TODO(ccalvarin) when --batch is gone and the startup_options field in the
   // gRPC message is always set, there is no reason for client options that are
@@ -1581,7 +1381,7 @@ static void RunLauncher(const string &self_path,
 
   WarnFilesystemType(startup_options.output_base);
 
-  const DurationMillis extract_data_duration = ExtractData(
+  const ExtractionDurationMillis extract_data_duration = ExtractData(
       self_path, archive_contents, install_md5, startup_options, logging_info);
 
   blaze_server->Connect();
diff --git a/src/main/cpp/blaze_util_darwin.cc b/src/main/cpp/blaze_util_darwin.cc
index c2e8e1f697f5de..67b95eb583c57e 100644
--- a/src/main/cpp/blaze_util_darwin.cc
+++ b/src/main/cpp/blaze_util_darwin.cc
@@ -14,17 +14,18 @@
 
 #include "src/main/cpp/blaze_util_platform.h"
 
-#include 
-#include 
-#include 
-#include 
-#include 
-
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
 #include 
 
 #include 
@@ -135,16 +136,12 @@ string GetSelfPath(const char* argv0) {
 }
 
 uint64_t GetMillisecondsMonotonic() {
-  struct timeval ts = {};
-  if (gettimeofday(&ts, nullptr) < 0) {
+  uint64_t nsec = clock_gettime_nsec_np(CLOCK_UPTIME_RAW);
+  if (nsec == 0) {
     BAZEL_DIE(blaze_exit_code::INTERNAL_ERROR)
-        << "error calling gettimeofday: " << GetLastErrorString();
+        << "error calling clock_gettime_nsec_np: " << GetLastErrorString();
   }
-  return ts.tv_sec * 1000LL + ts.tv_usec / 1000LL;
-}
-
-uint64_t GetMillisecondsSinceProcessStart() {
-  return (clock() * 1000LL) / CLOCKS_PER_SEC;
+  return nsec / 1000000LL;
 }
 
 void SetScheduling(bool batch_cpu_scheduling, int io_nice_level) {
diff --git a/src/main/cpp/blaze_util_posix.cc b/src/main/cpp/blaze_util_posix.cc
index 7236dd52d727b0..2793572269886a 100644
--- a/src/main/cpp/blaze_util_posix.cc
+++ b/src/main/cpp/blaze_util_posix.cc
@@ -140,7 +140,9 @@ static void handler(int signum) {
     case SIGINT:
       if (++sigint_count >= 3) {
         SigPrintf(
-            "\n%s caught third interrupt signal; killed.\n\n",
+            "\n%s caught third interrupt signal; server killed. (This may be "
+            "expensive, see https://bazel.build/advanced/performance/"
+            "iteration-speed#avoid-ctrl-c.)\n\n",
             SignalHandler::Get().GetProductName().c_str());
         if (SignalHandler::Get().GetServerProcessInfo()->server_pid_ != -1) {
           KillServerProcess(
@@ -150,13 +152,13 @@ static void handler(int signum) {
         _exit(1);
       }
       SigPrintf(
-          "\n%s caught interrupt signal; shutting down.\n\n",
+          "\n%s caught interrupt signal; cancelling pending invocation.\n\n",
           SignalHandler::Get().GetProductName().c_str());
       SignalHandler::Get().CancelServer();
       break;
     case SIGTERM:
       SigPrintf(
-          "\n%s caught terminate signal; shutting down.\n\n",
+          "\n%s caught terminate signal; cancelling pending invocation.\n\n",
           SignalHandler::Get().GetProductName().c_str());
       SignalHandler::Get().CancelServer();
       break;
@@ -726,7 +728,12 @@ void ReleaseLock(BlazeLock* blaze_lock) {
 
 bool KillServerProcess(int pid, const blaze_util::Path& output_base) {
   // Kill the process and make sure it's dead before proceeding.
-  killpg(pid, SIGKILL);
+  errno = 0;
+  if (killpg(pid, SIGKILL) == -1) {
+    BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
+        << "Attempted to kill stale server process (pid=" << pid
+        << ") using SIGKILL: " << GetLastErrorString();
+  }
   if (!AwaitServerProcessTermination(pid, output_base,
                                      kPostKillGracePeriodSeconds)) {
     BAZEL_DIE(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR)
diff --git a/src/main/cpp/util/numbers.h b/src/main/cpp/util/numbers.h
index f1ef6f79913f3f..f6052b123042d9 100644
--- a/src/main/cpp/util/numbers.h
+++ b/src/main/cpp/util/numbers.h
@@ -14,6 +14,7 @@
 #ifndef BAZEL_SRC_MAIN_CPP_UTIL_NUMBERS_H_
 #define BAZEL_SRC_MAIN_CPP_UTIL_NUMBERS_H_
 
+#include 
 #include 
 
 namespace blaze_util {
diff --git a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
index d7f99dae6ff566..55a9e1d2b954b0 100644
--- a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
+++ b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
@@ -83,6 +83,22 @@ public ImmutableMap> getAllDocPages() {
     return allDocPages;
   }
 
+  /** Collects symbols predefined in BZL files. */
+  private ImmutableMap collectBzlGlobals(ConfiguredRuleClassProvider provider) {
+    // StarlarkNativeModuleApi is faked because we want to inherit the documentation carried in its
+    // annotations, whereas the real "native" object is just a bare struct.
+    ImmutableMap.Builder env = ImmutableMap.builder();
+    env.put("native", new FakeStarlarkNativeModuleApi());
+    for (Map.Entry entry :
+        provider.getBazelStarlarkEnvironment().getUninjectedBuildBzlEnv().entrySet()) {
+      if (entry.getKey().equals("native")) {
+        continue;
+      }
+      env.put(entry);
+    }
+    return env.buildOrThrow();
+  }
+
   /*
    * Collects a list of native rules that are available in BUILD files as top level functions
    * and in BZL files as methods of the native package.
@@ -99,16 +115,6 @@ private List collectNativeRules(
     return processor.getNativeRules();
   }
 
-  /** Collects symbols predefined in BZL files. */
-  private ImmutableMap collectBzlGlobals(ConfiguredRuleClassProvider provider) {
-    // StarlarkNativeModuleApi is faked, because we don't have a PackageFactory here
-    // and we can't use BazelStarlarkEnvironment.
-    return ImmutableMap.builder()
-        .put("native", new FakeStarlarkNativeModuleApi())
-        .putAll(provider.getEnvironment())
-        .buildOrThrow();
-  }
-
   private ConfiguredRuleClassProvider createRuleClassProvider(String classProvider)
       throws NoSuchMethodException, InvocationTargetException, IllegalAccessException,
           ClassNotFoundException {
diff --git a/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/args.html b/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/args.html
index dd9316ab1b0313..000d89a78332f8 100644
--- a/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/args.html
+++ b/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/args.html
@@ -1,6 +1,6 @@
 

List of strings; optional; subject to - $(location) and + $(location) and "Make variable" substitution, and Bourne shell tokenization; nonconfigurable diff --git a/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/env.html b/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/env.html index 8885781f28c2b9..86de92a1f318ca 100644 --- a/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/env.html +++ b/src/main/java/com/google/devtools/build/docgen/templates/attributes/binary/env.html @@ -1,5 +1,5 @@

Dictionary of strings; optional; values are subject to -$(location) and +$(location) and "Make variable" substitution

Specifies additional environment variables to set when the target is diff --git a/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/args.html b/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/args.html index c384583a3c5296..d717ce344f64d0 100644 --- a/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/args.html +++ b/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/args.html @@ -1,5 +1,5 @@

List of strings; optional; subject to -$(location) and +$(location) and "Make variable" substitution, and Bourne shell tokenization

diff --git a/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/env.html b/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/env.html index 8c448aa28e443c..ac0d8f797d411e 100644 --- a/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/env.html +++ b/src/main/java/com/google/devtools/build/docgen/templates/attributes/test/env.html @@ -1,7 +1,7 @@

Dictionary of strings; optional; values are subject to - $(location) and + $(location) and "Make variable" substitution

diff --git a/src/main/java/com/google/devtools/build/docgen/templates/be/make-variables.vm b/src/main/java/com/google/devtools/build/docgen/templates/be/make-variables.vm index 26f536461b47c6..76911b1efadf92 100644 --- a/src/main/java/com/google/devtools/build/docgen/templates/be/make-variables.vm +++ b/src/main/java/com/google/devtools/build/docgen/templates/be/make-variables.vm @@ -412,7 +412,7 @@

These variables are a fallback mechanism to be used by language experts in rare cases. If you are tempted to use them, please contact the Bazel devs first. + href="https://bazel.build/help">contact the Bazel devs first.