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
64
third_party/bazel/rules_haskell/haskell/private/context.bzl
vendored
Normal file
64
third_party/bazel/rules_haskell/haskell/private/context.bzl
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
"""Derived context with Haskell-specific fields and methods"""
|
||||
|
||||
load("@bazel_skylib//lib:paths.bzl", "paths")
|
||||
|
||||
HaskellContext = provider()
|
||||
|
||||
def haskell_context(ctx, attr = None):
|
||||
toolchain = ctx.toolchains["@io_tweag_rules_haskell//haskell:toolchain"]
|
||||
|
||||
if not attr:
|
||||
attr = ctx.attr
|
||||
|
||||
if hasattr(attr, "src_strip_prefix"):
|
||||
src_strip_prefix = attr.src_strip_prefix
|
||||
else:
|
||||
src_strip_prefix = ""
|
||||
|
||||
src_root = paths.join(
|
||||
ctx.label.workspace_root,
|
||||
ctx.label.package,
|
||||
src_strip_prefix,
|
||||
)
|
||||
|
||||
env = {
|
||||
"LANG": toolchain.locale,
|
||||
}
|
||||
|
||||
if toolchain.locale_archive != None:
|
||||
env["LOCALE_ARCHIVE"] = toolchain.locale_archive.path
|
||||
|
||||
coverage_enabled = False
|
||||
if hasattr(ctx, "configuration"):
|
||||
coverage_enabled = ctx.configuration.coverage_enabled
|
||||
|
||||
return HaskellContext(
|
||||
# Fields
|
||||
name = attr.name,
|
||||
label = ctx.label,
|
||||
toolchain = toolchain,
|
||||
tools = toolchain.tools,
|
||||
src_root = src_root,
|
||||
package_root = ctx.label.workspace_root + ctx.label.package,
|
||||
env = env,
|
||||
mode = ctx.var["COMPILATION_MODE"],
|
||||
actions = ctx.actions,
|
||||
bin_dir = ctx.bin_dir,
|
||||
genfiles_dir = ctx.genfiles_dir,
|
||||
coverage_enabled = coverage_enabled,
|
||||
)
|
||||
|
||||
def render_env(env):
|
||||
"""Render environment dict to shell exports.
|
||||
|
||||
Example:
|
||||
|
||||
>>> render_env({"PATH": "foo:bar", "LANG": "lang"})
|
||||
export PATH=foo:bar
|
||||
export LANG=lang
|
||||
|
||||
"""
|
||||
return "\n".join([
|
||||
"export {}={}".format(k, v)
|
||||
for k, v in env.items()
|
||||
])
|
||||
Loading…
Add table
Add a link
Reference in a new issue