Make commands build on ghc 7.10 as well
This commit is contained in:
parent
47f13c3f3d
commit
90eeb7bf0a
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
import Control.Monad (when, unless)
|
import Control.Monad (when, unless)
|
||||||
import Control.Monad.IO.Class (liftIO)
|
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 as C
|
||||||
import qualified Data.Conduit.Binary as CB
|
import qualified Data.Conduit.Binary as CB
|
||||||
import Data.Time.LocalTime (localTimeToUTC, utc)
|
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.Environment (getProgName, getArgs)
|
||||||
import System.Exit (exitFailure)
|
import System.Exit (exitFailure)
|
||||||
import System.FilePath.Posix (takeDirectory) -- zip files only use forward slashes
|
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
|
mapM_ (liftIO . hSetFileSize h . toInteger) zipEntrySize
|
||||||
write C..| CB.sinkHandle h
|
write C..| CB.sinkHandle h
|
||||||
liftIO $ hClose h
|
liftIO $ hClose h
|
||||||
|
#if MIN_VERSION_directory(1,2,3)
|
||||||
liftIO $ setModificationTime name $ localTimeToUTC utc zipEntryTime -- FIXME: timezone
|
liftIO $ setModificationTime name $ localTimeToUTC utc zipEntryTime -- FIXME: timezone
|
||||||
|
#endif
|
||||||
where name = BSC.unpack $ BSC.dropWhile ('/' ==) zipEntryName -- should we utf8 decode?
|
where name = BSC.unpack $ BSC.dropWhile ('/' ==) zipEntryName -- should we utf8 decode?
|
||||||
start (Right _) = fail "Unexpected leading or directory data contents"
|
start (Right _) = fail "Unexpected leading or directory data contents"
|
||||||
write = C.await >>= maybe
|
write = C.await >>= maybe
|
||||||
|
|||||||
13
cmd/zip.hs
13
cmd/zip.hs
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
import Control.Monad (filterM, void)
|
import Control.Monad (filterM, void)
|
||||||
import Control.Monad.IO.Class (MonadIO, liftIO)
|
import Control.Monad.IO.Class (MonadIO, liftIO)
|
||||||
import Control.Monad.Trans.Resource (MonadResource, runResourceT)
|
import Control.Monad.Trans.Resource (MonadResource, runResourceT)
|
||||||
@ -7,7 +8,13 @@ import qualified Data.Conduit.Binary as CB
|
|||||||
import Data.List (foldl')
|
import Data.List (foldl')
|
||||||
import Data.Time.LocalTime (utcToLocalTime, utc)
|
import Data.Time.LocalTime (utcToLocalTime, utc)
|
||||||
import qualified System.Console.GetOpt as Opt
|
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.Environment (getProgName, getArgs)
|
||||||
import System.Exit (exitFailure)
|
import System.Exit (exitFailure)
|
||||||
import System.FilePath.Posix ((</>)) -- zip files only want forward slashes
|
import System.FilePath.Posix ((</>)) -- zip files only want forward slashes
|
||||||
@ -38,7 +45,11 @@ generate (p:paths) = do
|
|||||||
isd <- liftIO $ doesDirectoryExist p
|
isd <- liftIO $ doesDirectoryExist p
|
||||||
if isd
|
if isd
|
||||||
then do
|
then do
|
||||||
|
#if MIN_VERSION_directory(1,2,6)
|
||||||
dl <- liftIO $ filterM (fmap not . isSymbolicLink) . map (p </>) =<< listDirectory p
|
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)
|
C.yield (e{ zipEntryName = zipEntryName e `BSC.snoc` '/', zipEntrySize = Just 0 }, mempty)
|
||||||
generate $ dl ++ paths
|
generate $ dl ++ paths
|
||||||
else do
|
else do
|
||||||
|
|||||||
@ -15,10 +15,6 @@ source-repository head
|
|||||||
type: git
|
type: git
|
||||||
location: https://github.com/dylex/zip-stream
|
location: https://github.com/dylex/zip-stream
|
||||||
|
|
||||||
flag commands
|
|
||||||
description: Build command-line zip/unzip testing programs
|
|
||||||
default: True
|
|
||||||
|
|
||||||
library
|
library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
Codec.Archive.Zip.Conduit.Types
|
Codec.Archive.Zip.Conduit.Types
|
||||||
@ -45,40 +41,34 @@ library
|
|||||||
zlib
|
zlib
|
||||||
|
|
||||||
executable unzip-stream
|
executable unzip-stream
|
||||||
if !flag(commands)
|
|
||||||
buildable: False
|
|
||||||
main-is: unzip.hs
|
main-is: unzip.hs
|
||||||
hs-source-dirs: cmd
|
hs-source-dirs: cmd
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
if flag(commands)
|
build-depends:
|
||||||
build-depends:
|
base >=4.8 && <5,
|
||||||
base >=4.9 && <5,
|
bytestring,
|
||||||
bytestring,
|
conduit,
|
||||||
conduit,
|
conduit-extra,
|
||||||
conduit-extra,
|
directory >= 1.2.2,
|
||||||
directory >= 1.2.3,
|
filepath,
|
||||||
filepath,
|
time,
|
||||||
time,
|
transformers,
|
||||||
zip-stream
|
zip-stream
|
||||||
else
|
|
||||||
buildable: False
|
|
||||||
|
|
||||||
executable zip-stream
|
executable zip-stream
|
||||||
main-is: zip.hs
|
main-is: zip.hs
|
||||||
hs-source-dirs: cmd
|
hs-source-dirs: cmd
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
if flag(commands)
|
build-depends:
|
||||||
build-depends:
|
base >=4.8 && <5,
|
||||||
base >=4.9 && <5,
|
bytestring,
|
||||||
bytestring,
|
conduit,
|
||||||
conduit,
|
conduit-extra,
|
||||||
conduit-extra,
|
directory >= 1.2.2,
|
||||||
directory >= 1.2.6,
|
filepath,
|
||||||
filepath,
|
resourcet,
|
||||||
resourcet,
|
time,
|
||||||
time,
|
transformers,
|
||||||
zip-stream
|
zip-stream
|
||||||
else
|
|
||||||
buildable: False
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user