about summary refs log tree commit diff
path: root/third_party/bazel/rules_haskell/haskell/assets
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/bazel/rules_haskell/haskell/assets')
-rw-r--r--third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_2_win_base.patch11
-rw-r--r--third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_4_win_base.patch11
-rw-r--r--third_party/bazel/rules_haskell/haskell/assets/ghci_script39
3 files changed, 61 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_2_win_base.patch b/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_2_win_base.patch
new file mode 100644
index 000000000000..9e47363f25dc
--- /dev/null
+++ b/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_2_win_base.patch
@@ -0,0 +1,11 @@
+--- lib/package.conf.d/base-4.12.0.0.conf	2019-03-19 18:04:35.186653529 +0100
++++ lib/package.conf.d/base-4.12.0.0.conf	2019-03-19 18:04:48.958873769 +0100
+@@ -79,7 +79,7 @@
+ data-dir: $topdir\x86_64-windows-ghc-8.6.2\base-4.12.0.0
+ hs-libraries: HSbase-4.12.0.0
+ extra-libraries:
+-    wsock32 user32 shell32 msvcrt mingw32 mingwex
++    wsock32 user32 shell32 msvcrt mingw32 mingwex shlwapi
+ include-dirs: $topdir\base-4.12.0.0\include
+ includes:
+     HsBase.h
diff --git a/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_4_win_base.patch b/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_4_win_base.patch
new file mode 100644
index 000000000000..9fe008ebb784
--- /dev/null
+++ b/third_party/bazel/rules_haskell/haskell/assets/ghc_8_6_4_win_base.patch
@@ -0,0 +1,11 @@
+--- lib/package.conf.d/base-4.12.0.0.conf	2019-03-20 12:24:30.857292020 +0100
++++ lib/package.conf.d/base-4.12.0.0.conf	2019-03-20 12:24:44.637400564 +0100
+@@ -79,7 +79,7 @@
+ data-dir: $topdir\x86_64-windows-ghc-8.6.4\base-4.12.0.0
+ hs-libraries: HSbase-4.12.0.0
+ extra-libraries:
+-    wsock32 user32 shell32 msvcrt mingw32 mingwex
++    wsock32 user32 shell32 msvcrt mingw32 mingwex shlwapi
+ include-dirs: $topdir\base-4.12.0.0\include
+ includes:
+     HsBase.h
diff --git a/third_party/bazel/rules_haskell/haskell/assets/ghci_script b/third_party/bazel/rules_haskell/haskell/assets/ghci_script
new file mode 100644
index 000000000000..ddf9e7917482
--- /dev/null
+++ b/third_party/bazel/rules_haskell/haskell/assets/ghci_script
@@ -0,0 +1,39 @@
+:add {ADD_SOURCES}
+:module + System.IO GHC.IO.Handle Control.Exception System.Directory
+import qualified GHC.IO.Handle as Handle
+import qualified System.IO as IO
+import qualified System.Directory as Dir
+rules_haskell_stdout_dupe <- Handle.hDuplicate IO.stdout
+:{
+(rules_haskell_stdout_copy_file, rules_haskell_stdout_copy_h) <- do
+  rules_haskell_tmp_dir <- Dir.getTemporaryDirectory Prelude.>>= Dir.canonicalizePath
+  (rules_haskell_fn, rules_haskell_h) <- IO.openTempFile rules_haskell_tmp_dir "rules-haskell-ghci-repl"
+  Handle.hDuplicateTo rules_haskell_h IO.stdout
+  Prelude.return (rules_haskell_fn, rules_haskell_h)
+:}
+:show modules
+:{
+rules_haskell_loaded_modules <- do
+  Handle.hClose rules_haskell_stdout_copy_h
+  -- I had to do it like this because flushing and then searching in the
+  -- stream at offset 0 did not work (no data is there, although the
+  -- corresponding file certainly contained it after flushing). Couldn't
+  -- figure this one out, so we first close the file and then read from it.
+  rules_haskell_h <- IO.openFile rules_haskell_stdout_copy_file IO.ReadMode
+  rules_haskell_xs <- Handle.hGetContents rules_haskell_h
+  Dir.removeFile rules_haskell_stdout_copy_file
+  Prelude.return Prelude.$ Prelude.takeWhile (Prelude./= ' ') Prelude.<$> Prelude.lines rules_haskell_xs
+:}
+hDuplicateTo rules_haskell_stdout_dupe IO.stdout
+:{
+let rules_haskell_add_loaded_modules _ =
+      Prelude.return Prelude.$ ":module + " Prelude.++
+        Data.List.intercalate " " (("*" Prelude.++) Prelude.<$> rules_haskell_loaded_modules)
+:}
+:module - System.IO GHC.IO.Handle Control.Exception System.Directory
+:def rules_haskell_add_loaded_modules rules_haskell_add_loaded_modules
+:rules_haskell_add_loaded_modules
+:undef rules_haskell_add_loaded_modules
+-- reload modules to drop the rules_haskell* definitions
+:reload
+{COMMANDS}