Skip to main content
Glama
prebuilt_jar.bzl3.99 kB
# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under both the MIT license found in the # LICENSE-MIT file in the root directory of this source tree and the Apache # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. load("@prelude//android:android_providers.bzl", "merge_android_packageable_info") load("@prelude//java/utils:java_utils.bzl", "get_classpath_subtarget") load( ":java_providers.bzl", "ClasspathSnapshotGranularity", "JavaClasspathEntry", "create_abi", "create_java_library_providers", "generate_java_classpath_snapshot", ) load(":java_toolchain.bzl", "PrebuiltJarToolchainInfo") def prebuilt_jar_impl(ctx: AnalysisContext) -> list[Provider]: """ prebuilt_jar() rule implementation Args: ctx: rule analysis context Returns: list of created providers """ expected_extensions = [".jar", ".jmod"] binary_jar = ctx.attrs.binary_jar extension = binary_jar.extension if extension not in expected_extensions: fail("Extension of the binary_jar attribute has to be one of '{}' but '{}' has an extension '{}'".format( expected_extensions, binary_jar, extension, )) output = ctx.actions.declare_output("symlink/{}".format(binary_jar.short_path)) ctx.actions.symlink_file(output, binary_jar) gwt_output = ctx.actions.declare_output("{}-gwt.jar".format(ctx.label.name)) ctx.actions.copy_file(gwt_output, ctx.attrs.source_jar if ctx.attrs.source_jar else ctx.attrs.binary_jar) abi = None prebuilt_jar_toolchain = ctx.attrs._prebuilt_jar_toolchain[PrebuiltJarToolchainInfo] if not prebuilt_jar_toolchain.is_bootstrap_toolchain: if ctx.attrs.generate_abi: abi = create_abi(ctx.actions, prebuilt_jar_toolchain.class_abi_generator, output) jar_snapshot = generate_java_classpath_snapshot( ctx.actions, ctx.attrs._prebuilt_jar_toolchain[PrebuiltJarToolchainInfo].cp_snapshot_generator, ClasspathSnapshotGranularity("CLASS_LEVEL"), abi or output, "", ) library_output_classpath_entry = JavaClasspathEntry( full_library = output, abi = abi or output, abi_as_dir = None, required_for_source_only_abi = ctx.attrs.required_for_source_only_abi, abi_jar_snapshot = jar_snapshot, ) java_library_info, java_packaging_info, global_code_info, shared_library_info, cxx_resource_info, linkable_graph, template_placeholder_info, _ = create_java_library_providers( ctx, library_output = library_output_classpath_entry, global_code_config = prebuilt_jar_toolchain.global_code_config, declared_deps = ctx.attrs.deps, exported_deps = ctx.attrs.deps, provided_deps = ctx.attrs.desugar_deps, needs_desugar = True, is_prebuilt_jar = True, gwt_module = gwt_output, sources_jar = ctx.attrs.source_jar, ) # TODO(T107163344) this shouldn't be in prebuilt_jar itself, use overlays to remove it. android_packageable_info = merge_android_packageable_info(ctx.label, ctx.actions, ctx.attrs.deps) sub_targets = get_classpath_subtarget(ctx.actions, java_packaging_info) sub_targets["abi"] = [ java_library_info, template_placeholder_info, DefaultInfo(default_output = library_output_classpath_entry.abi), ] return [ java_library_info, java_packaging_info, global_code_info, shared_library_info, cxx_resource_info, android_packageable_info, template_placeholder_info, linkable_graph, DefaultInfo(default_output = output, sub_targets = sub_targets), ] + ( [ RunInfo(args = cmd_args([ctx.attrs._prebuilt_jar_toolchain[PrebuiltJarToolchainInfo].java[RunInfo], "-jar", output])), ] if ctx.attrs.is_executable else [] )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server