diff options
-rwxr-xr-x | bwrap-files/start.sh | 6 | ||||
-rw-r--r-- | bwrap-files/workdir/Yahb2Defs.hs | 8 | ||||
-rwxr-xr-x | bwrap-files/workdir/entry.sh (renamed from bwrap-files/entry.sh) | 2 | ||||
-rw-r--r-- | src/Ghci.hs | 3 |
4 files changed, 15 insertions, 4 deletions
diff --git a/bwrap-files/start.sh b/bwrap-files/start.sh index 03bf77e..f0d0fa1 100755 --- a/bwrap-files/start.sh +++ b/bwrap-files/start.sh @@ -20,6 +20,7 @@ args=( --ro-bind "${ghcup_base}/bin" "${ghcup_base}/bin" --ro-bind "${ghcup_base}/ghc" "${ghcup_base}/ghc" --ro-bind "${ghcup_base}/cache" "${ghcup_base}/cache" + --ro-bind "${filesdir}/workdir" /workdir --setenv PATH "/bin:/usr/bin:${ghcup_base}/bin" --setenv GHCUP_INSTALL_BASE_PREFIX "$(dirname ${ghcup_base})" --proc /proc @@ -27,8 +28,7 @@ args=( --new-session --unshare-all --die-with-parent - --file 4 "/tmp/entry.sh" - /bin/bash "/tmp/entry.sh" + /bin/bash "/workdir/entry.sh" ) # Turn off core files @@ -40,4 +40,4 @@ ulimit -u 10000 # Limit memory to 500 MiB. ulimit -d $(( 500 * 1024 )) -exec bwrap "${args[@]}" 4<"${filesdir}/entry.sh" +exec bwrap "${args[@]}" diff --git a/bwrap-files/workdir/Yahb2Defs.hs b/bwrap-files/workdir/Yahb2Defs.hs new file mode 100644 index 0000000..c0dfbfd --- /dev/null +++ b/bwrap-files/workdir/Yahb2Defs.hs @@ -0,0 +1,8 @@ +module Yahb2Defs where + + +limitedPrint :: Show a => a -> IO () +limitedPrint x = + case splitAt 200 (show x) of + (s, "") -> putStrLn s + (s, _) -> putStrLn (take 197 s ++ "...") diff --git a/bwrap-files/entry.sh b/bwrap-files/workdir/entry.sh index f9c4ad3..1a466da 100755 --- a/bwrap-files/entry.sh +++ b/bwrap-files/workdir/entry.sh @@ -3,4 +3,4 @@ set -euo pipefail cd "$(dirname "$0")" -ghcup --offline run -- ghci 2>&1 +ghcup --offline run -- ghci Yahb2Defs.hs 2>&1 diff --git a/src/Ghci.hs b/src/Ghci.hs index 13eb4ca..649403f 100644 --- a/src/Ghci.hs +++ b/src/Ghci.hs @@ -47,6 +47,9 @@ makeGhci = do , std_in = CreatePipe , std_out = UseHandle pipeIn , std_err = UseHandle pipeIn } + hPutStrLn stdinH ":set -interactive-print=Yahb2Defs.limitedPrint" + hPutStrLn stdinH ":m" + hFlush stdinH return Ghci { ghciProc = proch , ghciStdin = stdinH , ghciStdout = pipeOut } |