blob: 41b6ffc3c212b6c192f0649b01e7a708b22670b0 [file] [log] [blame]
module(
name = "rules_haskell",
version = "0.19",
)
bazel_dep(
name = "platforms",
version = "0.0.8",
)
bazel_dep(
name = "rules_java",
version = "6.1.0",
)
bazel_dep(
name = "rules_license",
version = "0.0.7",
)
bazel_dep(
name = "protobuf",
version = "21.7",
repo_name = "com_google_protobuf",
)
bazel_dep(
name = "rules_cc",
version = "0.0.9",
)
bazel_dep(
name = "rules_nodejs",
version = "5.8.3",
)
bazel_dep(
name = "rules_python",
version = "0.21.0",
)
bazel_dep(
name = "bazel_skylib",
version = "1.5.0",
)
bazel_dep(
name = "rules_proto",
version = "5.3.0-21.7",
)
bazel_dep(
name = "aspect_rules_js",
version = "1.34.0",
)
bazel_dep(
name = "rules_sh",
version = "0.4.0",
)
ghc_version = use_extension("//extensions:ghc_version.bzl", "ghc_default_version")
use_repo(
ghc_version,
"rules_haskell_ghc_version",
)
rules_haskell_dependencies = use_extension(
"//extensions:rules_haskell_dependencies.bzl",
"rules_haskell_dependencies",
)
use_repo(
rules_haskell_dependencies,
"Cabal",
"os_info",
"rules_haskell_stack",
"rules_haskell_stack_update",
"rules_haskell_worker_dependencies",
)
asterius = use_extension("@rules_haskell//haskell/asterius:extension.bzl", "rules_haskell_asterius")
use_repo(
asterius,
"rules_haskell_asterius_build_setting",
"rules_haskell_asterius_webpack",
)
haskell_toolchains = use_extension(
"@rules_haskell//extensions:haskell_toolchains.bzl",
"haskell_toolchains",
)
haskell_toolchains.bindists()
use_repo(
haskell_toolchains,
"all_bindist_toolchains",
"rules_haskell_ghc_windows_amd64_cc_toolchain",
"rules_haskell_python_local",
)
# We need to register the nix toolchain before the bindist ones so it
# take precedence when we use the nixpkgs config.
register_toolchains(
"@rules_haskell_ghc_nixpkgs_toolchain//:toolchain",
dev_dependency = True,
)
register_toolchains(
"@all_bindist_toolchains//:all",
"@rules_haskell_ghc_windows_amd64_cc_toolchain//:all",
"@rules_haskell_python_local//:toolchain",
)
# Setup node toolchain and install webpack for asterius.
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
node.toolchain(node_version = "16.9.0")
npm = use_extension(
"@aspect_rules_js//npm:extensions.bzl",
"npm",
)
npm.npm_translate_lock(
name = "rules_haskell_npm",
link_workspace = "rules_haskell",
pnpm_lock = "//haskell/asterius/npm:pnpm-lock.yaml",
verify_node_modules_ignored = "@rules_haskell//:.bazelignore",
)
use_repo(npm, "rules_haskell_npm")
#### Development dependencies ####
bazel_dep(
name = "rules_nixpkgs_core",
version = "0.10.0",
dev_dependency = True,
)
bazel_dep(
name = "rules_nixpkgs_cc",
version = "0.10.0",
dev_dependency = True,
)
bazel_dep(
name = "rules_nixpkgs_python",
version = "0.10.0",
dev_dependency = True,
)
bazel_dep(
name = "rules_nixpkgs_go",
version = "0.10.0",
dev_dependency = True,
)
bazel_dep(
name = "rules_nixpkgs_posix",
version = "0.10.0",
dev_dependency = True,
)
bazel_dep(
name = "stardoc",
version = "0.6.2",
dev_dependency = True,
repo_name = "io_bazel_stardoc",
)
bazel_dep(
name = "rules_nixpkgs_nodejs",
version = "0.10.0",
dev_dependency = True,
)
non_module_dev_deps = use_extension(
"//:non_module_dev_deps.bzl",
"non_module_dev_deps",
dev_dependency = True,
)
use_repo(
non_module_dev_deps,
"examples",
"examples-arm",
"tutorial",
)
use_repo(
non_module_dev_deps,
"nixpkgs_default",
"rules_haskell_ghc_nixpkgs",
"rules_haskell_ghc_nixpkgs_toolchain",
)
use_repo(
non_module_dev_deps,
"nixpkgs_config_cc",
"nixpkgs_config_cc_info",
"nixpkgs_config_cc_toolchains",
"nixpkgs_python_toolchain",
)
register_toolchains(
"@nixpkgs_config_cc_toolchains//:all",
"@nixpkgs_python_toolchain//:toolchain",
dev_dependency = True,
)
# For buildifier
bazel_dep(
name = "rules_go",
version = "0.39.1",
dev_dependency = True,
repo_name = "io_bazel_rules_go",
)
use_repo(
non_module_dev_deps,
"com_github_bazelbuild_buildtools",
"nixpkgs_go_sdk_toolchains",
)
register_toolchains(
"@nixpkgs_go_sdk_toolchains//:all",
dev_dependency = True,
)
go_sdk = use_extension(
"@io_bazel_rules_go//go:extensions.bzl",
"go_sdk",
dev_dependency = True,
)
go_sdk.download(
version = "1.19.7",
)
bazel_dep(
name = "gazelle",
version = "0.33.0",
dev_dependency = True,
)
go_deps = use_extension(
"@gazelle//:extensions.bzl",
"go_deps",
dev_dependency = True,
)
go_deps.module(
path = "github.com/gogo/protobuf",
sum = "h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=",
version = "v1.3.2",
)
use_repo(
go_deps,
"com_github_gogo_protobuf",
"com_github_golang_mock",
"com_github_golang_protobuf",
"org_golang_google_genproto",
"org_golang_google_grpc",
"org_golang_google_protobuf",
"org_golang_x_net",
"org_golang_x_tools",
)
# For documentation
use_repo(
non_module_dev_deps,
"graphviz",
"linux_pandoc",
"macos_pandoc",
"nixpkgs_pandoc",
"sphinx",
"zip",
)
register_toolchains(
"@rules_haskell//docs/pandoc:nixpkgs",
"@rules_haskell//docs/pandoc:linux",
"@rules_haskell//docs/pandoc:macos",
"@rules_haskell//tests:protobuf-toolchain",
"@rules_haskell//tests:protobuf-toolchain-osx_arm64",
dev_dependency = True,
)
stack_snapshot = use_extension(
"@rules_haskell//extensions:stack_snapshot.bzl",
"stack_snapshot",
)
# The @stackage workspace is referenced in the `stack_snapshot` macro to
# forward the generated `components.json` file to the `_stack_executables`
# repository rule which generates the `@stackage-exe` workspace. This reference
# is resolved within the scope of rules_haskell and therefore requires
# `@stackage` to be imported.
# See https://github.com/tweag/rules_haskell/blob/e31617dcd76264f00a833625f70e1e46e91fbc57/haskell/cabal.bzl#L2709
# TODO[AH] Find a way to not require an import of `@stackage` into rules_haskell.
use_repo(
stack_snapshot,
"stackage",
)
stack_snapshot_dev = use_extension(
"@rules_haskell//extensions:stack_snapshot.bzl",
"stack_snapshot",
dev_dependency = True,
)
[
stack_snapshot_dev.package(
name = package,
)
for package in [
# Core libraries
"base",
"bytestring",
"containers",
"deepseq",
"mtl",
"text",
"vector",
# For tests
"lens-family-core",
"data-default-class",
"proto-lens",
"lens-family",
]
]
stack_snapshot_dev.package(
name = "ghc-paths",
vendored = "@rules_haskell//tools/ghc-paths",
)
stack_snapshot_dev.package(
name = "proto-lens-protoc",
components = [
"lib",
"exe",
],
setup_deps = ["@Cabal//:Cabal"],
)
[
# See https://github.com/tweag/rules_haskell/issues/1871
stack_snapshot_dev.package(
name = package,
setup_deps = ["@Cabal//:Cabal"],
)
for package in [
"HUnit",
"bifunctors",
"call-stack",
"generic-deriving",
"mono-traversable",
"proto-lens-runtime",
"quickcheck-io",
"transformers-compat",
"type-errors",
"typed-process",
"unliftio-core",
]
]
stack_snapshot_dev.stack_snapshot_json(label = "@rules_haskell//:stackage_snapshot.json")
stack_snapshot_dev.snapshot(
local_snapshot = "@rules_haskell//:stackage_snapshot.yaml",
)
use_repo(
stack_snapshot_dev,
"stackage-exe",
"stackage-unpinned",
)