git.iko.soy/typeable/cabal2nix
on master help sign in
Read '.cabal' file always with UTF-8 decoding.

Fixes https://github.com/NixOS/cabal2nix/issues/218.

commit569b21b97ffe598d50ee9652c9c81ff783f5ab90 authorFelix Kunzmann <fe.kunzmann@gmail.com> dateMon 23 May 2016, 16:24 (10 years ago) parent8729064
1 file changed+4−2
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+4−2
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+4−2
@@ -19,7 +19,7 @@ import Distribution.Text ( simpleParse )
1919import System.Directory ( doesDirectoryExist, doesFileExist, createDirectoryIfMissing, getHomeDirectory, getDirectoryContents )
2020import System.Exit ( exitFailure )
2121import System.FilePath ( (</>), (<.>) )
22−import System.IO ( hPutStrLn, stderr, hPutStr )
22+import System.IO ( hPutStrLn, stderr, hPutStr, openFile, InputMode(ReadMode), hSetEncoding, utf8, hGetContents )
2323
2424data Package = Package
2525 { pkgSource :: DerivationSource
@@ -143,7 +143,9 @@ cabalFromFile failHard file =
143143 -- wrap the whole block in `catchIO`, because of lazy IO. The `case` will force
144144 -- the reading of the file, so we will always catch the expression here.
145145 MaybeT $ handleIO (\err -> Nothing <$ hPutStrLn stderr ("*** parsing cabal file: " ++ show err)) $ do
146− content <- readFile file
146+ inputHandle <- openFile ReadMode file
147+ hSetEncoding inputHandle utf8
148+ content <- hGetContent inputHandle
147149 case Cabal.parsePackageDescription content of
148150 Cabal.ParseFailed e | failHard -> do
149151 let (line, err) = ParseUtils.locatedErrorMsg e