Add wrapper for Runhaskell, Fix #304 (#305)
authorZhen Zhang <izgzhen@gmail.com>
Sat, 15 Apr 2017 20:08:33 +0000 (04:08 +0800)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Sat, 15 Apr 2017 20:08:33 +0000 (21:08 +0100)
.gitignore
src/Rules/Program.hs
src/Rules/Wrappers/Runhaskell.hs [new file with mode: 0644]

index 6b06fea..2e3581b 100644 (file)
@@ -17,3 +17,6 @@ cabal.sandbox.config
 
 # the user settings
 /UserSettings.hs
+
+# Mostly temp file by emacs
+*~
index 254284a..71fb8b7 100644 (file)
@@ -12,6 +12,7 @@ import Oracles.ModuleFiles
 import Oracles.PackageData
 import Rules.Wrappers.Ghc
 import Rules.Wrappers.GhcPkg
+import Rules.Wrappers.Runhaskell
 import Settings
 import Settings.Path
 import Target
@@ -25,6 +26,7 @@ type Wrapper = FilePath -> Expr String
 wrappers :: [(Context, Wrapper)]
 wrappers = [ (vanillaContext Stage0 ghc   , ghcWrapper   )
            , (vanillaContext Stage1 ghc   , ghcWrapper   )
+           , (vanillaContext Stage1 runGhc, runhaskellWrapper)
            , (vanillaContext Stage0 ghcPkg, ghcPkgWrapper) ]
 
 buildProgram :: [(Resource, Int)] -> Context -> Rules ()
diff --git a/src/Rules/Wrappers/Runhaskell.hs b/src/Rules/Wrappers/Runhaskell.hs
new file mode 100644 (file)
index 0000000..521b41a
--- /dev/null
@@ -0,0 +1,15 @@
+module Rules.Wrappers.Runhaskell (runhaskellWrapper) where
+
+import Base
+import Expression
+import Oracles.Path
+
+runhaskellWrapper :: FilePath -> Expr String
+runhaskellWrapper program = do
+    lift $ need [sourcePath -/- "Rules/Wrappers/Runhaskell.hs"]
+    top <- getTopDirectory
+    return $ unlines
+        [ "#!/bin/bash"
+        , "exec " ++ (top -/- program)
+          ++ " -f" ++ (top -/- "inplace/lib/bin/ghc-stage2") -- HACK
+          ++ " -B" ++ (top -/- "inplace/lib") ++ " ${1+\"$@\"}" ]