Skip to content
Snippets Groups Projects
Commit 31a54a0e authored by Alexis Williams's avatar Alexis Williams
Browse files

Fix `new-sdist` file handle leak

Lazy I/O strikes again.
parent d8f89cff
No related branches found
No related tags found
No related merge requests found
......@@ -72,6 +72,7 @@ import Control.Monad.Writer.Lazy
( WriterT, tell, execWriterT )
import Data.Bits
( shiftL )
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as BSL
import Data.Either
( partitionEithers )
......@@ -259,7 +260,7 @@ packageToSdist verbosity projectRootDir format outputFile pkg = do
Left err -> liftIO $ die' verbosity ("Error packing sdist: " ++ err)
Right path -> tell [Tar.directoryEntry path]
contents <- liftIO $ BSL.readFile file
contents <- liftIO . fmap BSL.fromStrict . BS.readFile $ file
case Tar.toTarPath False (prefix </> file) of
Left err -> liftIO $ die' verbosity ("Error packing sdist: " ++ err)
Right path -> tell [(Tar.fileEntry path contents) { Tar.entryPermissions = perm' }]
......
# cabal new-sdist
Wrote tarball sdist to <ROOT>/many-data-files.dist/source/dist-newstyle/sdist/many-data-files-0.tar.gz
......@@ -11,5 +11,5 @@ main = cabalTest . withSourceCopy $ do
liftIO $ createDirectoryIfMissing False (cwd </> "data")
forM_ [1 .. n + 100] $ \i ->
liftIO $ BS.writeFile (cwd </> "data" </> ("data-file-" ++ show i) <.> "txt") (BS.pack "a data file\n")
expectBroken 5541 $ cabal "new-sdist" ["many-data-files"]
cabal "new-sdist" ["many-data-files"]
Nothing -> skip
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment