Make commands build on ghc 7.10 as well

This commit is contained in:
Dylan Simon 2017-05-15 16:47:44 -04:00
parent 47f13c3f3d
commit 90eeb7bf0a
3 changed files with 41 additions and 33 deletions

View File

@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE RecordWildCards #-}
import Control.Monad (when, unless)
import Control.Monad.IO.Class (liftIO)
@ -6,7 +7,11 @@ import qualified Data.ByteString.Char8 as BSC
import qualified Data.Conduit as C
import qualified Data.Conduit.Binary as CB
import Data.Time.LocalTime (localTimeToUTC, utc)
import System.Directory (createDirectoryIfMissing, setModificationTime)
import System.Directory (createDirectoryIfMissing
#if MIN_VERSION_directory(1,2,3)
, setModificationTime
#endif
)
import System.Environment (getProgName, getArgs)
import System.Exit (exitFailure)
import System.FilePath.Posix (takeDirectory) -- zip files only use forward slashes
@ -26,7 +31,9 @@ extract = C.awaitForever start where
mapM_ (liftIO . hSetFileSize h . toInteger) zipEntrySize
write C..| CB.sinkHandle h
liftIO $ hClose h
#if MIN_VERSION_directory(1,2,3)
liftIO $ setModificationTime name $ localTimeToUTC utc zipEntryTime -- FIXME: timezone
#endif
where name = BSC.unpack $ BSC.dropWhile ('/' ==) zipEntryName -- should we utf8 decode?
start (Right _) = fail "Unexpected leading or directory data contents"
write = C.await >>= maybe

View File

@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
import Control.Monad (filterM, void)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Trans.Resource (MonadResource, runResourceT)
@ -7,7 +8,13 @@ import qualified Data.Conduit.Binary as CB
import Data.List (foldl')
import Data.Time.LocalTime (utcToLocalTime, utc)
import qualified System.Console.GetOpt as Opt
import System.Directory (doesDirectoryExist, getModificationTime, isSymbolicLink, listDirectory)
import System.Directory (doesDirectoryExist, getModificationTime
#if MIN_VERSION_directory(1,2,6)
, isSymbolicLink, listDirectory
#else
, getDirectoryContents
#endif
)
import System.Environment (getProgName, getArgs)
import System.Exit (exitFailure)
import System.FilePath.Posix ((</>)) -- zip files only want forward slashes
@ -38,7 +45,11 @@ generate (p:paths) = do
isd <- liftIO $ doesDirectoryExist p
if isd
then do
#if MIN_VERSION_directory(1,2,6)
dl <- liftIO $ filterM (fmap not . isSymbolicLink) . map (p </>) =<< listDirectory p
#else
dl <- liftIO $ filter (`notElem` [".",".."]) . map (p </>) <$> getDirectoryContents p
#endif
C.yield (e{ zipEntryName = zipEntryName e `BSC.snoc` '/', zipEntrySize = Just 0 }, mempty)
generate $ dl ++ paths
else do

View File

@ -15,10 +15,6 @@ source-repository head
type: git
location: https://github.com/dylex/zip-stream
flag commands
description: Build command-line zip/unzip testing programs
default: True
library
exposed-modules:
Codec.Archive.Zip.Conduit.Types
@ -45,40 +41,34 @@ library
zlib
executable unzip-stream
if !flag(commands)
buildable: False
main-is: unzip.hs
hs-source-dirs: cmd
default-language: Haskell2010
ghc-options: -Wall
if flag(commands)
build-depends:
base >=4.9 && <5,
bytestring,
conduit,
conduit-extra,
directory >= 1.2.3,
filepath,
time,
zip-stream
else
buildable: False
build-depends:
base >=4.8 && <5,
bytestring,
conduit,
conduit-extra,
directory >= 1.2.2,
filepath,
time,
transformers,
zip-stream
executable zip-stream
main-is: zip.hs
hs-source-dirs: cmd
default-language: Haskell2010
ghc-options: -Wall
if flag(commands)
build-depends:
base >=4.9 && <5,
bytestring,
conduit,
conduit-extra,
directory >= 1.2.6,
filepath,
resourcet,
time,
zip-stream
else
buildable: False
build-depends:
base >=4.8 && <5,
bytestring,
conduit,
conduit-extra,
directory >= 1.2.2,
filepath,
resourcet,
time,
transformers,
zip-stream