diff --git a/hadrian/src/Builder.hs b/hadrian/src/Builder.hs index 87171c960977c13344520007e788e0022b20b5ed..dbe6f4b735f4039b043b0168bf2356b8b1eb3728 100644 --- a/hadrian/src/Builder.hs +++ b/hadrian/src/Builder.hs @@ -333,8 +333,8 @@ instance H.Builder Builder where GenApply -> captureStdout GenPrimopCode -> do - stdin <- readFile' input - Stdout stdout <- cmd' (Stdin stdin) [path] buildArgs buildOptions + need [input] + Stdout stdout <- cmd' (FileStdin input) [path] buildArgs buildOptions -- see Note [Capture stdout as a ByteString] writeFileChangedBS output stdout diff --git a/utils/genprimopcode/Main.hs b/utils/genprimopcode/Main.hs index fd4d4ec25e4cbf1d97e2e3190ad328b7817c5603..0f5fa29acfad3470ade59ceaf6d4389e2e6d7867 100644 --- a/utils/genprimopcode/Main.hs +++ b/utils/genprimopcode/Main.hs @@ -13,6 +13,7 @@ import Data.Char import Data.List (union, intersperse, intercalate, nub) import Data.Maybe ( catMaybes ) import System.Environment ( getArgs ) +import System.IO ( hSetEncoding, stdin, stdout, utf8 ) vecOptions :: Entry -> [(String,String,Int)] vecOptions i = @@ -116,7 +117,9 @@ main = getArgs >>= \args -> ++ unlines (map (" "++) known_args) ) else - do s <- getContents + do hSetEncoding stdin utf8 -- The input file is in UTF-8. Set the encoding explicitly. + hSetEncoding stdout utf8 + s <- getContents case parse s of Left err -> error ("parse error at " ++ (show err)) Right p_o_specs@(Info _ _)