Skip to content

Commit 5a9e66d

Browse files
committed
Add test for ghcWithPackages (repro #2097)
1 parent e1c5d8b commit 5a9e66d

File tree

7 files changed

+115
-2
lines changed

7 files changed

+115
-2
lines changed

.bazelrc.common

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ coverage --build_tag_filters "coverage-compatible" --test_tag_filters "coverage-
143143

144144
# To update these lines, execute
145145
# `bazel run @contrib_rules_bazel_integration_test//tools:update_deleted_packages`
146-
build --deleted_packages=examples,examples/arm,examples/basic_modules,examples/cat_hs,examples/cat_hs/exec/cat_hs,examples/cat_hs/lib/args,examples/cat_hs/lib/cat,examples/primitive,examples/rts,examples/transformers,examples/vector,tests/c2hs/repo,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-a,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-b,tests/haskell_module/repl/haskell_module_repl_test,tests/library-external-workspace/repo,tests/recompilation/recompilation_workspace,tests/repl-targets/hs_bin_repl_test,tests/repl-targets/hs_lib_repl_test,tests/stack-snapshot-deps/hs_override_stack_test,tutorial,tutorial/lib,tutorial/main,tutorial/tools/build_rules
147-
query --deleted_packages=examples,examples/arm,examples/basic_modules,examples/cat_hs,examples/cat_hs/exec/cat_hs,examples/cat_hs/lib/args,examples/cat_hs/lib/cat,examples/primitive,examples/rts,examples/transformers,examples/vector,tests/c2hs/repo,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-a,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-b,tests/haskell_module/repl/haskell_module_repl_test,tests/library-external-workspace/repo,tests/recompilation/recompilation_workspace,tests/repl-targets/hs_bin_repl_test,tests/repl-targets/hs_lib_repl_test,tests/stack-snapshot-deps/hs_override_stack_test,tutorial,tutorial/lib,tutorial/main,tutorial/tools/build_rules
146+
build --deleted_packages=examples,examples/arm,examples/basic_modules,examples/cat_hs,examples/cat_hs/exec/cat_hs,examples/cat_hs/lib/args,examples/cat_hs/lib/cat,examples/primitive,examples/rts,examples/transformers,examples/vector,tests/c2hs/repo,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-a,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-b,tests/haskell_module/repl/haskell_module_repl_test,tests/library-external-workspace/repo,tests/recompilation/recompilation_workspace,tests/repl-targets/hs_bin_repl_test,tests/repl-targets/hs_lib_repl_test,tests/stack-snapshot-deps/hs_override_stack_test,tutorial,tutorial/lib,tutorial/main,tutorial/tools/build_rules,tests/ghcWithPackages_2097/test
147+
query --deleted_packages=examples,examples/arm,examples/basic_modules,examples/cat_hs,examples/cat_hs/exec/cat_hs,examples/cat_hs/lib/args,examples/cat_hs/lib/cat,examples/primitive,examples/rts,examples/transformers,examples/vector,tests/c2hs/repo,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-a,tests/haskell_module/repl/haskell_module_repl_cross_library_deps_test/package-b,tests/haskell_module/repl/haskell_module_repl_test,tests/library-external-workspace/repo,tests/recompilation/recompilation_workspace,tests/repl-targets/hs_bin_repl_test,tests/repl-targets/hs_lib_repl_test,tests/stack-snapshot-deps/hs_override_stack_test,tutorial,tutorial/lib,tutorial/main,tutorial/tools/build_rules,tests/ghcWithPackages_2097/test
148148

149149
# Needed to build @rules_jvm_external//private/tools/java/com/github/bazelbuild/rules_jvm_external/zip (used by //tests/java_classpath)
150150
build:macos-nixpkgs --tool_java_language_version=11
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
load("//tests/integration_testing:rules_haskell_integration_test.bzl", "rules_haskell_integration_test")
2+
3+
rules_haskell_integration_test(
4+
name = "ghc_with_packages_test",
5+
srcs = ["Test.hs"],
6+
workspace_path = "test",
7+
)
8+
9+
filegroup(
10+
name = "all_files",
11+
testonly = True,
12+
srcs = glob(["**"]),
13+
visibility = ["//visibility:public"],
14+
)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{-# OPTIONS -Wall #-}
2+
3+
import Test.Hspec (hspec, it)
4+
import IntegrationTesting
5+
6+
main :: IO ()
7+
main = hspec $ do
8+
it "bazel run ghcWithPackages" $ do
9+
bazel <- setupTestBazel
10+
assertSuccess (bazel ["run", "//:add-one"])
11+
-- assertSuccess (bazel ["cquery", "--output", "build", "@rules_haskell_ghc_nixpkgs_haskell_toolchain//:rts"])
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
load("@rules_cc//cc:defs.bzl", "cc_test")
2+
load(
3+
"@rules_haskell//haskell:defs.bzl",
4+
"haskell_library",
5+
"haskell_toolchain_library",
6+
)
7+
8+
haskell_toolchain_library(name = "base")
9+
10+
haskell_toolchain_library(name = "rts")
11+
12+
haskell_library(
13+
name = "add-one-hs",
14+
srcs = ["One.hs"],
15+
deps = [":base"],
16+
)
17+
18+
cc_test(
19+
name = "add-one",
20+
srcs = [
21+
"main.c",
22+
],
23+
visibility = ["//visibility:public"],
24+
deps = [
25+
":add-one-hs",
26+
":rts",
27+
],
28+
)
29+
30+
filegroup(
31+
name = "all_files",
32+
testonly = True,
33+
srcs = glob(["**"]),
34+
visibility = ["//visibility:public"],
35+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module One () where
2+
3+
add_one_hs :: Int -> Int
4+
add_one_hs x = x + 1
5+
6+
foreign export ccall add_one_hs :: Int -> Int
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
local_repository(
2+
name = "rules_haskell",
3+
path = "%RULES_HASKELL_PATH%",
4+
)
5+
6+
load("@rules_haskell//haskell:repositories.bzl", "rules_haskell_dependencies")
7+
8+
rules_haskell_dependencies()
9+
10+
load("@rules_haskell//haskell:nixpkgs.bzl", "haskell_register_ghc_nixpkgs")
11+
12+
haskell_register_ghc_nixpkgs(
13+
attribute_path = "",
14+
nix_file_content = "with import <nixpkgs> {}; haskell.packages.ghc948.ghcWithPackages (p:[p.async])",
15+
repository = "@rules_haskell//nixpkgs:default.nix",
16+
version = "9.4.8",
17+
)
18+
19+
load("@rules_haskell//haskell:toolchain.bzl", "rules_haskell_toolchains")
20+
21+
rules_haskell_toolchains(version = "9.4.8")
22+
23+
load(
24+
"@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl",
25+
"nixpkgs_cc_configure",
26+
"nixpkgs_python_configure",
27+
)
28+
29+
nixpkgs_cc_configure(
30+
name = "nixpkgs_config_cc",
31+
repository = "@rules_haskell//nixpkgs:default.nix",
32+
)
33+
34+
nixpkgs_python_configure(
35+
repository = "@rules_haskell//nixpkgs:default.nix",
36+
)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include <stdio.h>
2+
#include "HsFFI.h"
3+
4+
extern HsInt add_one_hs(HsInt a0);
5+
6+
int main(int argc, char *argv[]) {
7+
hs_init(&argc, &argv);
8+
printf("Adding one to 5 through Haskell is %lld\n", add_one_hs(5));
9+
hs_exit();
10+
return 0;
11+
}

0 commit comments

Comments
 (0)