diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/tests/binary-linkstatic-flag/BUILD.bazel')
-rw-r--r-- | third_party/bazel/rules_haskell/tests/binary-linkstatic-flag/BUILD.bazel | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/third_party/bazel/rules_haskell/tests/binary-linkstatic-flag/BUILD.bazel b/third_party/bazel/rules_haskell/tests/binary-linkstatic-flag/BUILD.bazel deleted file mode 100644 index 4e8e7cfa6684..000000000000 --- a/third_party/bazel/rules_haskell/tests/binary-linkstatic-flag/BUILD.bazel +++ /dev/null @@ -1,118 +0,0 @@ -load( - "@io_tweag_rules_haskell//haskell:haskell.bzl", - "haskell_library", - "haskell_test", -) -load("//tests:inline_tests.bzl", "sh_inline_test") - -# test whether `linkstatic` works as expected -package(default_testonly = 1) - -cc_library( - name = "c-lib", - srcs = ["c-lib.c"], -) - -haskell_library( - name = "HsLib", - srcs = ["HsLib.hs"], - deps = [ - "//tests/hackage:base", - ], -) - -haskell_test( - name = "binary-static", - srcs = ["Main.hs"], - linkstatic = True, - deps = [ - ":HsLib", - ":c-lib", - "//tests/hackage:base", - ], -) - -haskell_test( - name = "binary-dynamic", - srcs = ["Main.hs"], - linkstatic = False, - deps = [ - ":HsLib", - ":c-lib", - "//tests/hackage:base", - ], -) - -config_setting( - name = "debug_build", - values = { - "compilation_mode": "dbg", - }, -) - -# Ensure that linkstatic=True only links to static library targets. -sh_inline_test( - name = "test-binary-static-symbols", - size = "small", - args = [ - "$(rootpath :binary-static)", - ], - data = [ - ":binary-static", - ], - script = """ - set -eo pipefail - binary="$1" - # Symbols are prefixed with underscore on MacOS but not on Linux. - if nm -u "$binary" | grep -q "\<_\?value"; then - echo "C library dependency not linked statically: ${binary}" - exit 1 - fi - if nm -u "$binary" | grep -q HsLib_value_closure; then - echo "Haskell library dependency not linked statically ${binary}" - exit 1 - fi - """, -) - -# Ensure that linkstatic=False only links to dynamic library targets. -sh_inline_test( - name = "test-binary-dynamic-symbols", - size = "small", - args = [ - "$(rootpath :binary-dynamic)", - ] + select({ - ":debug_build": ["dbg"], - "//conditions:default": ["rls"], - }), - data = [ - ":binary-dynamic", - ], - script = """ - set -eo pipefail - binary="$1" - mode="$2" - if [[ $mode = dbg ]]; then - # Skip test in debug builds. Debug mode forces static linking. - exit 0 - fi - # Symbols are prefixed with underscore on MacOS but not on Linux. - if ! nm -u "$binary" | grep -q "\<_\?value"; then - echo "C library dependency not linked dynamically" - exit 1 - fi - if ! nm -u "$binary" | grep -q HsLib_value_closure; then - echo "Haskell library dependency not linked dynamically" - exit 1 - fi - """, -) - -test_suite( - name = "binary-linkstatic-flag", - tests = [ - ":test-binary-dynamic-symbols", - ":test-binary-static-symbols", - ], - visibility = ["//visibility:public"], -) |