Skip to content

Commit

Permalink
Publish rules_haskell@0.18 (#1223)
Browse files Browse the repository at this point in the history
* Publish rules_haskell@0.18

* Use Bazel 6.x
  • Loading branch information
avdv committed Dec 22, 2023
1 parent 8a907eb commit d442102
Show file tree
Hide file tree
Showing 4 changed files with 390 additions and 1 deletion.
350 changes: 350 additions & 0 deletions modules/rules_haskell/0.18/MODULE.bazel
@@ -0,0 +1,350 @@
module(
name = "rules_haskell",
version = "0.18",
)

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.3.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",
)
31 changes: 31 additions & 0 deletions modules/rules_haskell/0.18/presubmit.yml
@@ -0,0 +1,31 @@
bazel: 6.x
matrix:
platform:
- debian10
- ubuntu2004
- macos
- macos_arm64
# disable Windows for now, it fails with
# "this rule is missing dependency declarations for the following files ..."
#- windows
tasks:
verify_targets:
name: Verify build targets
platform: ${{ platform }}
environment:
BAZEL_USE_CPP_ONLY_TOOLCHAIN: '1'
shell_commands:
- |
if apt --version >/dev/null 2>/dev/null; then
sudo apt update
sudo apt install --no-install-recommends -yy libtinfo5 libgmp-dev
fi
batch_commands:
# enforce certificate update
- 'powershell -Command "Invoke-WebRequest -Uri https://hackage.haskell.org/root.json -OutFile out.json"'
- set BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
build_flags:
- '--incompatible_enable_cc_toolchain_resolution'
build_targets:
- '@rules_haskell//haskell/...'
- '@rules_haskell//tools/...'
7 changes: 7 additions & 0 deletions modules/rules_haskell/0.18/source.json
@@ -0,0 +1,7 @@
{
"url": "https://github.com/tweag/rules_haskell/releases/download/v0.18/rules_haskell-0.18.tar.gz",
"integrity": "sha256-0fDhvU8dXiSLKIK/3HwxoUYRL52FudLw73fnjQLsukU=",
"strip_prefix": "rules_haskell-0.18",
"patch_strip": 0,
"patches": {}
}

0 comments on commit d442102

Please sign in to comment.