| load("@rules_java//java:defs.bzl", "java_library") | |
| ######################################################################## | |
| # Description: | |
| # Main Java code for Bazel | |
| # | |
| # IMPORTANT: NOT A PUBLIC INTERFACE. | |
| # | |
| # DO NOT ADD A DEPENDENCY on any targets or sub-packages outside of | |
| # __subpackages__ without first talking to Bazel maintainers. | |
| # | |
| # Here are two good reasons: | |
| # | |
| # 1. FRAGILITY. This is not a stable API, it's an internal interface. | |
| # It changes from time to time, and your client *will* be broken. | |
| # | |
| # 2. CORRECTNESS. The BUILD file parser changes rapidly. If | |
| # your application depends upon it, your application will start to | |
| # bit-rot almost immediately. | |
| # | |
| # There are better alternatives. The 'bazel query' tool has | |
| # stable command-line and programmatic interfaces that will work with any | |
| # version of Bazel. They are also debugged and documented, so you'll | |
| # avoid many common traps and pitfalls when (e.g.) computing | |
| # dependencies. | |
| package( | |
| default_visibility = ["//src:__subpackages__"], | |
| ) | |
| # Package groups matching definitions in internal lib/BUILD to satisfy | |
| # visibility attributes of targets in subpackages (e.g. actions, util, etc.). | |
| package_group( | |
| name = "build_lib", | |
| packages = ["//src/..."], | |
| ) | |
| package_group( | |
| name = "full_access", | |
| includes = [":build_lib"], | |
| ) | |
| package_group( | |
| name = "package_loader_access", | |
| includes = [":full_access"], | |
| ) | |
| package_group( | |
| name = "starlark_access", | |
| includes = [":package_loader_access"], | |
| ) | |
| # Generate list of all srcs via: | |
| # bazel query 'filter("srcs", kind("filegroup rule", //src/main/java/com/google/devtools/build/lib/...))' | sort | sed -e "s/^/\"/" | sed -e "s/$/\",/" | fgrep -v "build/lib:srcs" | |
| filegroup( | |
| name = "srcs", | |
| srcs = glob(["**"]) + [ | |
| "//src/main/java/com/google/devtools/build/docgen:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/actions:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/actions/cache:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/authandtls:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/bazel:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/bugreport:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildeventservice:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildeventservice/client:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildeventstream:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildtool:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildtool/buildevent:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/causes:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/clock:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/cmdline:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/collect:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/collect/nestedset:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/compress:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/concurrent:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/dynamic:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/events:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/exec:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/graph:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/io:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/jni:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/metrics:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/network:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/packages:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/packages/metrics:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/packages/producers:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/packages/semantics:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/pkgcache:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/platform:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/profiler:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/profiler/memory:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2/common:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2/compat:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2/engine:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2/query/aspectresolvers:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/query2/query/output:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/remote:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/repository:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/rules:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/runtime:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/runtime/commands:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/runtime/events:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/runtime/mobileinstall:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/sandbox:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/sandbox/cgroups:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/server:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/shell:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/skybridge:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/skyframe:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/standalone:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkdebug/module:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkdebug/proto:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkdebug/server:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkdocextract:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/starlarkprofiler:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/supplier:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/testing/common:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/testing/vfs:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/unix:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/unsafe:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/util:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/versioning:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/vfs:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/vfs/bazel:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/windows:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/worker:srcs", | |
| "//src/main/java/com/google/devtools/build/skyframe:srcs", | |
| "//src/main/java/com/google/devtools/common/options:srcs", | |
| ], | |
| visibility = [ | |
| "//src:__pkg__", | |
| "//src/test/shell/bazel:__pkg__", | |
| ], | |
| ) | |
| java_library( | |
| name = "all-build-rules", | |
| exports = [ | |
| "//src/main/java/com/google/devtools/build/lib/actions", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:alias_provider", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_and_execution_result", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_core", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_environment", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_failure_event", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_issues", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_result", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:analysis_root_cause_event", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:aspect_complete_event", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:aspect_resolution_helpers", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:aspect_value", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:caching_analysis_environment", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:configuration_make_variable_context", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:configured_aspect_factory", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:configured_target_factory", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:dependency_resolution_helpers", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:event_handling_error_reporter", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:materialized_deps_info", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:package_specification_provider", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:required_fragments_util", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:sh_toolchain", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:shell_configuration", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:starlark/composed_transition_materializer", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_aspect_propagation_context", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_rule_transition_provider", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:starlark/unresolved_symlink_action", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:target_complete_event", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:target_context", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:test/coverage_common", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:test/test_tags_provider", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:top_level_artifact_helper", | |
| "//src/main/java/com/google/devtools/build/lib/analysis:transitive_visibility_provider", | |
| "//src/main/java/com/google/devtools/build/lib/analysis/actions:action_construction_context", | |
| "//src/main/java/com/google/devtools/build/lib/analysis/actions:file_write_action", | |
| "//src/main/java/com/google/devtools/build/lib/analysis/actions:shell_command", | |
| "//src/main/java/com/google/devtools/build/lib/concurrent", | |
| "//src/main/java/com/google/devtools/build/lib/graph", | |
| "//src/main/java/com/google/devtools/build/lib/rules:alias", | |
| "//src/main/java/com/google/devtools/build/lib/rules:extra/action_listener", | |
| "//src/main/java/com/google/devtools/build/lib/rules:extra/action_listener_rule", | |
| "//src/main/java/com/google/devtools/build/lib/rules:extra/extra_action_factory", | |
| "//src/main/java/com/google/devtools/build/lib/rules:extra/extra_action_rule", | |
| "//src/main/java/com/google/devtools/build/lib/rules:filegroup/filegroup", | |
| "//src/main/java/com/google/devtools/build/lib/rules:label_build_settings", | |
| "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", | |
| "//src/main/java/com/google/devtools/build/lib/rules:toolchain_type", | |
| "//src/main/java/com/google/devtools/build/lib/rules/objc", | |
| "//src/main/java/com/google/devtools/build/lib/util", | |
| "//src/main/java/com/google/devtools/build/lib/vfs", | |
| "//src/main/java/com/google/devtools/common/options", | |
| "//third_party:guava", | |
| ], | |
| ) | |
| ######################################################################## | |
| # | |
| # Documentation generation | |
| # | |
| filegroup( | |
| name = "generated_docs", | |
| srcs = [ | |
| "//src/main/java/com/google/devtools/build/lib:gen_buildencyclopedia", | |
| "//src/main/java/com/google/devtools/build/lib:gen_command-line-reference", | |
| "//src/main/java/com/google/devtools/build/lib:gen_skylarklibrary", | |
| ], | |
| visibility = ["//src/test/shell/bazel:__pkg__"], | |
| ) | |
| filegroup( | |
| name = "docs_embedded_in_sources", | |
| srcs = [ | |
| "//src/main/java/com/google/devtools/build/lib/analysis:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/bazel/rules:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/buildtool:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/exec:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/repository:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/rules:srcs", | |
| "//src/main/java/com/google/devtools/build/lib/runtime:srcs", | |
| ], | |
| ) | |
| genrule( | |
| name = "gen_buildencyclopedia", | |
| srcs = [ | |
| ":docs_embedded_in_sources", | |
| "//src/main/java/com/google/devtools/build/docgen:bazel_link_map", | |
| "//src/main/starlark/docgen:gen_be_proto_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_java_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_cpp_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_objc_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_python_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_shell_stardoc_proto", | |
| ], | |
| outs = ["build-encyclopedia.zip"], | |
| cmd = ( | |
| "mkdir -p $(@D)/be && " + | |
| "$(location //src/main/java/com/google/devtools/build/docgen:docgen_bin)" + | |
| " --link_map_path=$(location //src/main/java/com/google/devtools/build/docgen:bazel_link_map)" + | |
| " --provider=com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider" + | |
| " --input_root=$$PWD" + | |
| " --input_dir=$$PWD/src/main/java/com/google/devtools/build/lib" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_proto_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_java_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_cpp_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_objc_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_python_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_shell_stardoc_proto)" + | |
| " --output_dir=$(@D)/be" + | |
| " --create_toc=true &&" + | |
| "zip -qj $@ $(@D)/be/*" | |
| ), | |
| tools = [ | |
| "//src/main/java/com/google/devtools/build/docgen:docgen_bin", | |
| "//src/main/java/com/google/devtools/build/docgen:docgen_javalib", | |
| ], | |
| ) | |
| genrule( | |
| name = "gen_command-line-reference", | |
| srcs = [ | |
| "//docs:command-line-reference-prefix.html", | |
| "//docs:command-line-reference-suffix.html", | |
| ], | |
| outs = ["command-line-reference.html"], | |
| cmd = ( | |
| "cat $(location //docs:command-line-reference-prefix.html) > $@ && " + | |
| "TMP=$$(mktemp -d $${TMPDIR:-/tmp}/tmp.XXXXXXXXXX) && " + | |
| # TODO(#11179): Remove when the stub template fix is released. | |
| "export JARBIN=$(JAVABASE)/bin/jar && " + | |
| "$(location //src/main/java/com/google/devtools/build/lib/bazel:BazelServer) " + | |
| "--batch " + | |
| "--install_base=$${TMP} --output_base=$${TMP}/output/ --output_user_root=$${TMP} " + | |
| "--failure_detail_out=$${TMP}/output/failure_detail.rawproto " + | |
| "help everything-as-html >> $@ 2>$${TMP}/stderr && " + | |
| "cat $(location //docs:command-line-reference-suffix.html) >> $@" | |
| ), | |
| toolchains = ["@rules_java//toolchains:current_host_java_runtime"], | |
| tools = [ | |
| "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer", | |
| ], | |
| ) | |
| genrule( | |
| name = "gen_skylarklibrary", | |
| srcs = ["//src/main/java/com/google/devtools/build/docgen:bazel_link_map"], | |
| outs = ["skylark-library.zip"], | |
| cmd = "mkdir -p $(@D)/skylark-lib &&" + | |
| "$(location //src/main/java/com/google/devtools/build/docgen:skydoc_bin)" + | |
| " $(@D)/skylark-lib" + | |
| " --link_map_path=$(location //src/main/java/com/google/devtools/build/docgen:bazel_link_map)" + | |
| " --create_toc=true" + | |
| " && OUTPUT=$$PWD/$@" + | |
| " && pushd $(@D)/skylark-lib" + | |
| " && zip -qr $$OUTPUT ." + | |
| " && popd", | |
| tools = ["//src/main/java/com/google/devtools/build/docgen:skydoc_bin"], | |
| ) | |
| # TODO: Rename to gen_reference_docs once the docs migration is done. | |
| genrule( | |
| name = "gen_mdx_reference_docs", | |
| srcs = [ | |
| ":build-encyclopedia.zip", | |
| ":command-line-reference.html", | |
| ":skylark-library.zip", | |
| "//tools/build_defs/repo:doc", | |
| ], | |
| outs = ["mdx-reference-docs.zip"], | |
| cmd = "mkdir -p $(@D)/html_for_mdx/reference/be && " + | |
| "cp $(location :command-line-reference.html) $(@D)/html_for_mdx/reference/ && " + | |
| "unzip -q -d $(@D)/html_for_mdx/reference/be/ $(location :build-encyclopedia.zip) && " + | |
| "mkdir -p $(@D)/html_for_mdx/rules/lib/repo && " + | |
| "unzip -q -d $(@D)/html_for_mdx/rules/lib/ $(location :skylark-library.zip) && " + | |
| "tar -xf $(location //tools/build_defs/repo:doc) -C $(@D)/html_for_mdx/rules/lib/repo/ && " + | |
| "mkdir -p $(@D)/mdx_docs && " + | |
| "$(location //scripts/docs:docs2mdx) --in_dir $(@D)/html_for_mdx --out_dir $(@D)/mdx_docs && " + | |
| # Ugly hack: we want to preserve paths relative to mdx_docs/, | |
| # which means we have to temporarily cd into that directory and zip with -r. | |
| "pushd $(@D)/mdx_docs && " + | |
| "zip -qr tmp.zip . && " + | |
| "popd && mv $(@D)/mdx_docs/tmp.zip $@", | |
| tools = [ | |
| "//scripts/docs:docs2mdx", | |
| ], | |
| visibility = ["//scripts/docs:__pkg__"], | |
| ) | |
| genrule( | |
| name = "gen_api_proto", | |
| srcs = [ | |
| "//src/main/java/com/google/devtools/build/docgen:bazel_link_map", | |
| "//src/main/starlark/docgen:gen_be_proto_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_java_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_cpp_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_objc_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_python_stardoc_proto", | |
| "//src/main/starlark/docgen:gen_be_shell_stardoc_proto", | |
| ":docs_embedded_in_sources", | |
| ], | |
| outs = ["builtin.pb"], | |
| cmd = ( | |
| "$(location //src/main/java/com/google/devtools/build/docgen:api_exporter)" + | |
| " --output_file=$@" + | |
| " --link_map_path=$(location //src/main/java/com/google/devtools/build/docgen:bazel_link_map) " + | |
| " --provider=com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider" + | |
| " --input_root=$$PWD" + | |
| " --input_dir=$$PWD/src/main/java/com/google/devtools/build/lib" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_proto_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_java_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_cpp_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_objc_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_python_stardoc_proto)" + | |
| " --be_stardoc_proto=$(location //src/main/starlark/docgen:gen_be_shell_stardoc_proto)" | |
| ), | |
| tools = [ | |
| "//src/main/java/com/google/devtools/build/docgen:api_exporter", | |
| ], | |
| ) |