feat(third_party/bazel): Check in rules_haskell from Tweag
This commit is contained in:
parent
2eb1dc26e4
commit
f723b8b878
479 changed files with 51484 additions and 0 deletions
48
third_party/bazel/rules_haskell/haskell/private/java.bzl
vendored
Normal file
48
third_party/bazel/rules_haskell/haskell/private/java.bzl
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
"""Interop with Java."""
|
||||
|
||||
load("@bazel_skylib//lib:collections.bzl", "collections")
|
||||
|
||||
JavaInteropInfo = provider(
|
||||
doc = "Information needed for interop with Java rules.",
|
||||
fields = {
|
||||
"inputs": "Files needed during build.",
|
||||
"env": "Dict with env variables that should be set during build.",
|
||||
},
|
||||
)
|
||||
|
||||
def java_interop_info(ctx):
|
||||
"""Gather information from any Java dependencies.
|
||||
|
||||
Args:
|
||||
ctx: Rule context.
|
||||
|
||||
Returns:
|
||||
JavaInteropInfo: Information needed for Java interop.
|
||||
"""
|
||||
|
||||
inputs = depset(
|
||||
transitive = [
|
||||
# We only expose direct dependencies, though we could
|
||||
# expose transitive ones as well. Only exposing the direct
|
||||
# ones corresponds to Bazel's "strict Java dependencies"
|
||||
# mode. See
|
||||
# https://github.com/tweag/rules_haskell/issues/96.
|
||||
dep[JavaInfo].compile_jars
|
||||
for dep in ctx.attr.deps
|
||||
if JavaInfo in dep
|
||||
],
|
||||
)
|
||||
|
||||
env_dict = dict()
|
||||
uniq_classpath = collections.uniq([
|
||||
f.path
|
||||
for f in inputs
|
||||
])
|
||||
|
||||
if len(uniq_classpath) > 0:
|
||||
env_dict["CLASSPATH"] = ":".join(uniq_classpath)
|
||||
|
||||
return JavaInteropInfo(
|
||||
inputs = inputs,
|
||||
env = env_dict,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue