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
1
third_party/bazel/rules_haskell/tutorial/.bazelrc
vendored
Symbolic link
1
third_party/bazel/rules_haskell/tutorial/.bazelrc
vendored
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../.bazelrc
|
||||
1
third_party/bazel/rules_haskell/tutorial/.gitignore
vendored
Normal file
1
third_party/bazel/rules_haskell/tutorial/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/bazel-*
|
||||
30
third_party/bazel/rules_haskell/tutorial/README.md
vendored
Normal file
30
third_party/bazel/rules_haskell/tutorial/README.md
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Tutorial code
|
||||
|
||||
Code for the [Bazel Haskell tutorial][bazel-haskell-tutorial].
|
||||
|
||||
[bazel-haskell-tutorial]: https://rules-haskell.readthedocs.io/en/latest/haskell.html
|
||||
|
||||
## Tutorial Workspace
|
||||
|
||||
Build everything in the tutorial workspace with;
|
||||
|
||||
```
|
||||
$ bazel build @io_tweag_rules_haskell_tutorial//...
|
||||
```
|
||||
|
||||
Show everything in the tutorial;
|
||||
|
||||
```
|
||||
$ bazel query @io_tweag_rules_haskell_tutorial//...
|
||||
@io_tweag_rules_haskell_tutorial//main:demorgan
|
||||
@io_tweag_rules_haskell_tutorial//main:base
|
||||
@io_tweag_rules_haskell_tutorial//lib:booleans
|
||||
```
|
||||
|
||||
Build and run the tutorial example;
|
||||
|
||||
```
|
||||
$ bazel build @io_tweag_rules_haskell_tutorial//lib:booleans
|
||||
$ bazel build @io_tweag_rules_haskell_tutorial//main:demorgan
|
||||
$ bazel run @io_tweag_rules_haskell_tutorial//main:demorgan
|
||||
```
|
||||
49
third_party/bazel/rules_haskell/tutorial/WORKSPACE
vendored
Normal file
49
third_party/bazel/rules_haskell/tutorial/WORKSPACE
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
workspace(name = "io_tweag_rules_haskell_tutorial")
|
||||
|
||||
local_repository(
|
||||
name = "io_tweag_rules_haskell",
|
||||
path = "..",
|
||||
)
|
||||
|
||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||
load("@io_tweag_rules_haskell//haskell:repositories.bzl", "haskell_repositories")
|
||||
|
||||
haskell_repositories()
|
||||
|
||||
rules_nixpkgs_version = "0.5.2"
|
||||
|
||||
http_archive(
|
||||
name = "io_tweag_rules_nixpkgs",
|
||||
sha256 = "5a384daa57b49abf9f0b672852f1a66a3c52aecf9d4d2ac64f6de0fd307690c8",
|
||||
strip_prefix = "rules_nixpkgs-%s" % rules_nixpkgs_version,
|
||||
urls = ["https://github.com/tweag/rules_nixpkgs/archive/v%s.tar.gz" % rules_nixpkgs_version],
|
||||
)
|
||||
|
||||
load(
|
||||
"@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl",
|
||||
"nixpkgs_cc_configure",
|
||||
)
|
||||
|
||||
nixpkgs_cc_configure(
|
||||
nix_file = "@io_tweag_rules_haskell//nixpkgs:cc-toolchain.nix",
|
||||
repository = "@io_tweag_rules_haskell//nixpkgs:default.nix",
|
||||
)
|
||||
|
||||
load(
|
||||
"@io_tweag_rules_haskell//haskell:nixpkgs.bzl",
|
||||
"haskell_register_ghc_nixpkgs",
|
||||
)
|
||||
|
||||
haskell_register_ghc_nixpkgs(
|
||||
repositories = {
|
||||
"nixpkgs": "@io_tweag_rules_haskell//nixpkgs:default.nix",
|
||||
},
|
||||
version = "8.6.4",
|
||||
)
|
||||
|
||||
load(
|
||||
"@io_tweag_rules_haskell//haskell:haskell.bzl",
|
||||
"haskell_register_ghc_bindists",
|
||||
)
|
||||
|
||||
haskell_register_ghc_bindists(version = "8.6.4")
|
||||
10
third_party/bazel/rules_haskell/tutorial/lib/BUILD.bazel
vendored
Normal file
10
third_party/bazel/rules_haskell/tutorial/lib/BUILD.bazel
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
load(
|
||||
"@io_tweag_rules_haskell//haskell:haskell.bzl",
|
||||
"haskell_library",
|
||||
)
|
||||
|
||||
haskell_library(
|
||||
name = "booleans",
|
||||
srcs = ["Bool.hs"],
|
||||
visibility = ["//main:__pkg__"],
|
||||
)
|
||||
19
third_party/bazel/rules_haskell/tutorial/lib/Bool.hs
vendored
Normal file
19
third_party/bazel/rules_haskell/tutorial/lib/Bool.hs
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
-- base is not available when no dependencies, so we have to define everything
|
||||
-- from scratch.
|
||||
{-# LANGUAGE NoImplicitPrelude #-}
|
||||
|
||||
module Bool where
|
||||
|
||||
data Bool = False | True
|
||||
|
||||
not :: Bool -> Bool
|
||||
not False = True
|
||||
not True = False
|
||||
|
||||
and :: Bool -> Bool -> Bool
|
||||
and True True = True
|
||||
and _ _ = False
|
||||
|
||||
or :: Bool -> Bool -> Bool
|
||||
or False False = False
|
||||
or _ _ = True
|
||||
17
third_party/bazel/rules_haskell/tutorial/main/BUILD.bazel
vendored
Normal file
17
third_party/bazel/rules_haskell/tutorial/main/BUILD.bazel
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
load(
|
||||
"@io_tweag_rules_haskell//haskell:haskell.bzl",
|
||||
"haskell_test",
|
||||
"haskell_toolchain_library",
|
||||
)
|
||||
|
||||
haskell_toolchain_library(name = "base")
|
||||
|
||||
haskell_test(
|
||||
name = "demorgan",
|
||||
srcs = ["Main.hs"],
|
||||
compiler_flags = ["-threaded"],
|
||||
deps = [
|
||||
":base",
|
||||
"//lib:booleans",
|
||||
],
|
||||
)
|
||||
16
third_party/bazel/rules_haskell/tutorial/main/Main.hs
vendored
Normal file
16
third_party/bazel/rules_haskell/tutorial/main/Main.hs
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{-# LANGUAGE StandaloneDeriving #-}
|
||||
|
||||
module Main where
|
||||
|
||||
import Bool
|
||||
import qualified Prelude
|
||||
import Prelude ((++), (==), ($))
|
||||
|
||||
deriving instance Prelude.Eq Bool
|
||||
|
||||
bools :: [Bool]
|
||||
bools = [False, True]
|
||||
|
||||
main =
|
||||
Prelude.print $ Prelude.and $
|
||||
[ not (x `and` y) == not x `or` not y | x <- bools, y <- bools]
|
||||
0
third_party/bazel/rules_haskell/tutorial/tools/build_rules/BUILD.bazel
vendored
Normal file
0
third_party/bazel/rules_haskell/tutorial/tools/build_rules/BUILD.bazel
vendored
Normal file
5
third_party/bazel/rules_haskell/tutorial/tools/build_rules/prelude_bazel
vendored
Normal file
5
third_party/bazel/rules_haskell/tutorial/tools/build_rules/prelude_bazel
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
load("@io_tweag_rules_haskell//haskell:haskell.bzl",
|
||||
"haskell_binary",
|
||||
"haskell_toolchain_library",
|
||||
"haskell_library",
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue