+ , sortBy
+ , foldl'
+ , intersect
+ , partition
+ , (\\)
+ , sort
+ , intercalate)
import Data.Maybe (fromJust, fromMaybe, isJust, isNothing)
import Data.Ord (comparing)
import Text.Printf (printf)
diff --git a/src/Ganeti/HTools/Dedicated.hs b/src/Ganeti/HTools/Dedicated.hs
index 206513a..00413a6 100644
--- a/src/Ganeti/HTools/Dedicated.hs
+++ b/src/Ganeti/HTools/Dedicated.hs
@@ -44,7 +44,10 @@ module Ganeti.HTools.Dedicated
, runDedicatedAllocation
) where
-import Control.Applicative (liftA2, (<$>))
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (liftA2)
import Control.Arrow ((&&&))
import Control.Monad (unless, liftM, foldM, mplus)
import qualified Data.Foldable as F
diff --git a/src/Ganeti/HTools/Node.hs b/src/Ganeti/HTools/Node.hs
index 79993ad..477f15b 100644
--- a/src/Ganeti/HTools/Node.hs
+++ b/src/Ganeti/HTools/Node.hs
@@ -99,13 +99,15 @@ module Ganeti.HTools.Node
, haveExclStorage
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Monad (liftM, liftM2)
-import Control.Applicative ((<$>), (<*>))
import qualified Data.Foldable as Foldable
import Data.Function (on)
import qualified Data.Graph as Graph
import qualified Data.IntMap as IntMap
-import Data.List hiding (group)
+import Data.List (intercalate, foldl', delete, union, sortBy, groupBy)
import qualified Data.Map as Map
import Data.Ord (comparing)
import qualified Data.Set as Set
diff --git a/src/Ganeti/JQScheduler.hs b/src/Ganeti/JQScheduler.hs
index 9ec9e1a..ac2b248 100644
--- a/src/Ganeti/JQScheduler.hs
+++ b/src/Ganeti/JQScheduler.hs
@@ -48,16 +48,29 @@ module Ganeti.JQScheduler
, configChangeNeedsRescheduling
) where
-import Control.Applicative (liftA2, (<$>))
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (liftA2)
import Control.Arrow
import Control.Concurrent
import Control.Exception
-import Control.Monad
+import Control.Monad (when
+ , mfilter
+ , liftM
+ , void
+ , unless
+ , forever
+ , forM_)
import Control.Monad.IO.Class
import Data.Function (on)
-import Data.Functor ((<$))
import Data.IORef
-import Data.List
+import Data.List (find
+ , deleteFirstsBy
+ , sortBy
+ , intercalate
+ , partition
+ , insertBy)
import Data.Maybe
import qualified Data.Map as Map
import Data.Ord (comparing)
diff --git a/src/Ganeti/JQueue.hs b/src/Ganeti/JQueue.hs
index bf103f7..e54fd31 100644
--- a/src/Ganeti/JQueue.hs
+++ b/src/Ganeti/JQueue.hs
@@ -82,21 +82,30 @@ module Ganeti.JQueue
, QueuedJob(..)
) where
-import Control.Applicative (liftA2, (<|>), (<$>))
+import Prelude ()
+import Ganeti.Prelude hiding (id, log)
+
+import Control.Applicative (liftA2, (<|>))
import Control.Arrow (first, second)
import Control.Concurrent (forkIO, threadDelay)
import Control.Exception
import Control.Lens (over)
-import Control.Monad
+import Control.Monad (filterM
+ , liftM
+ , foldM
+ , void
+ , mfilter
+ , when
+ , mzero
+ , unless
+ , msum)
import Control.Monad.IO.Class
import Control.Monad.Trans (lift)
import Control.Monad.Trans.Maybe
-import Data.Functor ((<$))
-import Data.List
+import Data.List (stripPrefix, sortBy, isPrefixOf)
import Data.Maybe
import Data.Ord (comparing)
-- workaround what seems to be a bug in ghc 7.4's TH shadowing code
-import Prelude hiding (id, log)
import System.Directory
import System.FilePath
import System.IO.Error (isDoesNotExistError)
diff --git a/src/Ganeti/Kvmd.hs b/src/Ganeti/Kvmd.hs
index 4979396..597298b 100644
--- a/src/Ganeti/Kvmd.hs
+++ b/src/Ganeti/Kvmd.hs
@@ -59,13 +59,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Ganeti.Kvmd where
-import Prelude hiding (rem)
+import Prelude ()
+import Ganeti.Prelude hiding (rem)
-import Control.Applicative ((<$>))
import Control.Exception (try)
import Control.Concurrent
import Control.Monad (unless, when)
-import Data.List
+import Data.List (isPrefixOf, isInfixOf)
import Data.Set (Set)
import qualified Data.Set as Set (delete, empty, insert, member)
import System.Directory
diff --git a/src/Ganeti/Lens.hs b/src/Ganeti/Lens.hs
index c7951e6..ca4719d 100644
--- a/src/Ganeti/Lens.hs
+++ b/src/Ganeti/Lens.hs
@@ -44,7 +44,10 @@ module Ganeti.Lens
, atSet
) where
-import Control.Applicative ((<$>), WrappedMonad(..))
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (WrappedMonad(..))
import Control.Lens
import Control.Monad
import Data.Functor.Compose (Compose(..))
diff --git a/src/Ganeti/Locking/Allocation.hs b/src/Ganeti/Locking/Allocation.hs
index 2875d70..a17efb7 100644
--- a/src/Ganeti/Locking/Allocation.hs
+++ b/src/Ganeti/Locking/Allocation.hs
@@ -49,9 +49,12 @@ module Ganeti.Locking.Allocation
, freeLocks
) where
-import Control.Applicative (liftA2, (<$>), (<*>), pure)
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (liftA2)
import Control.Arrow (second, (***))
-import Control.Monad
+import Control.Monad (unless, guard, foldM, when)
import Data.Foldable (for_, find)
import qualified Data.Map as M
import Data.Maybe (fromMaybe)
diff --git a/src/Ganeti/Locking/Locks.hs b/src/Ganeti/Locking/Locks.hs
index e5bf524..1401b4f 100644
--- a/src/Ganeti/Locking/Locks.hs
+++ b/src/Ganeti/Locking/Locks.hs
@@ -44,7 +44,9 @@ module Ganeti.Locking.Locks
, lockLevel
) where
-import Control.Applicative ((<$>), (<*>), pure)
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Monad ((>=>), liftM)
import Data.List (stripPrefix)
import System.Posix.Types (ProcessID)
diff --git a/src/Ganeti/Logging.hs b/src/Ganeti/Logging.hs
index 5b7eb8a..a1f42d6 100644
--- a/src/Ganeti/Logging.hs
+++ b/src/Ganeti/Logging.hs
@@ -60,7 +60,9 @@ module Ganeti.Logging
, isDebugMode
) where
-import Control.Applicative ((<$>))
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Monad
import Control.Monad.Error.Class (MonadError(..))
import Control.Monad.Reader
@@ -68,7 +70,6 @@ import qualified Control.Monad.RWS.Strict as RWSS
import qualified Control.Monad.State.Strict as SS
import Control.Monad.Trans.Identity
import Control.Monad.Trans.Maybe
-import Data.Monoid
import System.Log.Logger
import System.Log.Handler.Simple
import System.Log.Handler.Syslog
diff --git a/src/Ganeti/Metad/ConfigCore.hs b/src/Ganeti/Metad/ConfigCore.hs
index 41120fd..187a797 100644
--- a/src/Ganeti/Metad/ConfigCore.hs
+++ b/src/Ganeti/Metad/ConfigCore.hs
@@ -35,7 +35,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}
module Ganeti.Metad.ConfigCore where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent.MVar.Lifted
import Control.Monad.Base
import Control.Monad.IO.Class
diff --git a/src/Ganeti/Monitoring/Server.hs b/src/Ganeti/Monitoring/Server.hs
index 530fd5b..aaad4f4 100644
--- a/src/Ganeti/Monitoring/Server.hs
+++ b/src/Ganeti/Monitoring/Server.hs
@@ -41,15 +41,17 @@ module Ganeti.Monitoring.Server
, DataCollector(..)
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Applicative
import Control.DeepSeq (force)
import Control.Exception.Base (evaluate)
-import Control.Monad
+import Control.Monad (void, forever, liftM, foldM, foldM_, mzero)
import Control.Monad.IO.Class
import Data.ByteString.Char8 (unpack)
import Data.Maybe (fromMaybe)
import Data.List (find)
-import Data.Monoid (mempty)
import qualified Data.Map as Map
import qualified Data.PSQueue as Queue
import Snap.Core
diff --git a/src/Ganeti/Objects.hs b/src/Ganeti/Objects.hs
index 85f3576..667d5b4 100644
--- a/src/Ganeti/Objects.hs
+++ b/src/Ganeti/Objects.hs
@@ -106,13 +106,14 @@ module Ganeti.Objects
, module Ganeti.Objects.Maintenance
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow (first)
import Control.Monad.State
import Data.List (foldl', intercalate)
import Data.Maybe
import qualified Data.Map as Map
-import Data.Monoid
import Data.Ord (comparing)
import Data.Ratio (numerator, denominator)
import Data.Tuple (swap)
diff --git a/src/Ganeti/Objects/Disk.hs b/src/Ganeti/Objects/Disk.hs
index 18ae20a..f3e08da 100644
--- a/src/Ganeti/Objects/Disk.hs
+++ b/src/Ganeti/Objects/Disk.hs
@@ -36,7 +36,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Ganeti.Objects.Disk where
-import Control.Applicative ((<*>), (<$>))
+import Prelude ()
+import Ganeti.Prelude
+
import Data.Char (isAsciiLower, isAsciiUpper, isDigit)
import Data.List (isPrefixOf, isInfixOf)
import Language.Haskell.TH.Syntax
diff --git a/src/Ganeti/Objects/Instance.hs b/src/Ganeti/Objects/Instance.hs
index 238898f..d25e134 100644
--- a/src/Ganeti/Objects/Instance.hs
+++ b/src/Ganeti/Objects/Instance.hs
@@ -36,7 +36,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Ganeti.Objects.Instance where
-import Data.Monoid
+import Prelude ()
+import Ganeti.Prelude
import Ganeti.JSON (emptyContainer)
import Ganeti.Objects.Nic
diff --git a/src/Ganeti/OpCodes.hs b/src/Ganeti/OpCodes.hs
index 0820d2e..7058d85 100644
--- a/src/Ganeti/OpCodes.hs
+++ b/src/Ganeti/OpCodes.hs
@@ -56,7 +56,9 @@ module Ganeti.OpCodes
, setOpPriority
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Data.List (intercalate)
import Data.Map (Map)
import qualified Text.JSON
diff --git a/src/Ganeti/Parsers.hs b/src/Ganeti/Parsers.hs
index 10b0e41..8671b9e 100644
--- a/src/Ganeti/Parsers.hs
+++ b/src/Ganeti/Parsers.hs
@@ -37,7 +37,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}
module Ganeti.Parsers where
-import Control.Applicative ((*>))
+import Prelude ()
+import Ganeti.Prelude
+
import qualified Data.Attoparsec.Text as A
import Data.Attoparsec.Text (Parser)
import Data.Text (unpack)
diff --git a/src/Ganeti/Prelude.hs b/src/Ganeti/Prelude.hs
new file mode 100644
index 0000000..b2a3e0e
--- /dev/null
+++ b/src/Ganeti/Prelude.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE NoImplicitPrelude, CPP, BangPatterns #-}
+
+{-| Export Prelude as in base 4.8.0
+
+-}
+
+{-
+
+Copyright (C) 2015 Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-}
+
+module Ganeti.Prelude (
+
+ -- * Standard types, classes and related functions
+
+ -- ** Basic data types
+ Bool(False, True),
+ (&&), (||), not, otherwise,
+
+ Maybe(Nothing, Just),
+ maybe,
+
+ Either(Left, Right),
+ either,
+
+ Ordering(LT, EQ, GT),
+ Char, String,
+
+ -- *** Tuples
+ fst, snd, curry, uncurry,
+
+ -- ** Basic type classes
+ Eq((==), (/=)),
+ Ord(compare, (<), (<=), (>=), (>), max, min),
+ Enum(succ, pred, toEnum, fromEnum, enumFrom, enumFromThen,
+ enumFromTo, enumFromThenTo),
+ Bounded(minBound, maxBound),
+
+ -- ** Numbers
+
+ -- *** Numeric types
+ Int, Integer, Float, Double,
+ Rational, Word,
+
+ -- *** Numeric type classes
+ Num((+), (-), (*), negate, abs, signum, fromInteger),
+ Real(toRational),
+ Integral(quot, rem, div, mod, quotRem, divMod, toInteger),
+ Fractional((/), recip, fromRational),
+ Floating(pi, exp, log, sqrt, (**), logBase, sin, cos, tan,
+ asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh),
+ RealFrac(properFraction, truncate, round, ceiling, floor),
+ RealFloat(floatRadix, floatDigits, floatRange, decodeFloat,
+ encodeFloat, exponent, significand, scaleFloat, isNaN,
+ isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
+
+ -- *** Numeric functions
+ subtract, even, odd, gcd, lcm, (^), (^^),
+ fromIntegral, realToFrac,
+
+ -- ** Monoids
+ Monoid(mempty, mappend, mconcat),
+
+ -- ** Monads and functors
+ Functor(fmap, (<$)), (<$>),
+ Applicative(pure, (<*>), (*>), (<*)),
+ Monad((>>=), (>>), return, fail),
+ mapM_, sequence_, (=<<),
+
+#if MIN_VERSION_base(4,8,0)
+ -- ** Folds and traversals
+ Foldable(elem, -- :: (Foldable t, Eq a) => a -> t a -> Bool
+ -- fold, -- :: Monoid m => t m -> m
+ foldMap, -- :: Monoid m => (a -> m) -> t a -> m
+ foldr, -- :: (a -> b -> b) -> b -> t a -> b
+ -- foldr', -- :: (a -> b -> b) -> b -> t a -> b
+ foldl, -- :: (b -> a -> b) -> b -> t a -> b
+ -- foldl', -- :: (b -> a -> b) -> b -> t a -> b
+ foldr1, -- :: (a -> a -> a) -> t a -> a
+ foldl1, -- :: (a -> a -> a) -> t a -> a
+ maximum, -- :: (Foldable t, Ord a) => t a -> a
+ minimum, -- :: (Foldable t, Ord a) => t a -> a
+ product, -- :: (Foldable t, Num a) => t a -> a
+ sum), -- :: Num a => t a -> a
+ -- toList) -- :: Foldable t => t a -> [a]
+#else
+ Foldable(foldMap,
+ foldr,
+ foldl,
+ foldr1,
+ foldl1),
+ elem,
+ maximum,
+ minimum,
+ product,
+ sum,
+#endif
+
+ Traversable(traverse, sequenceA, mapM, sequence),
+
+ -- ** Miscellaneous functions
+ id, const, (.), flip, ($), until,
+ asTypeOf, error, undefined,
+ seq, ($!),
+
+ -- * List operations
+ map, (++), filter,
+ head, last, tail, init, null, length, (!!),
+ reverse,
+ -- *** Special folds
+ and, or, any, all,
+ concat, concatMap,
+ -- ** Building lists
+ -- *** Scans
+ scanl, scanl1, scanr, scanr1,
+ -- *** Infinite lists
+ iterate, repeat, replicate, cycle,
+ -- ** Sublists
+ take, drop, splitAt, takeWhile, dropWhile, span, break,
+ -- ** Searching lists
+ notElem, lookup,
+ -- ** Zipping and unzipping lists
+ zip, zip3, zipWith, zipWith3, unzip, unzip3,
+ -- ** Functions on strings
+ lines, words, unlines, unwords,
+
+ -- * Converting to and from @String@
+ -- ** Converting to @String@
+ ShowS,
+ Show(showsPrec, showList, show),
+ shows,
+ showChar, showString, showParen,
+ -- ** Converting from @String@
+ ReadS,
+ Read(readsPrec, readList),
+ reads, readParen, read, lex,
+
+ -- * Basic Input and output
+ IO,
+ -- ** Simple I\/O operations
+ -- All I/O functions defined here are character oriented. The
+ -- treatment of the newline character will vary on different systems.
+ -- For example, two characters of input, return and linefeed, may
+ -- read as a single newline character. These functions cannot be
+ -- used portably for binary I/O.
+ -- *** Output functions
+ putChar,
+ putStr, putStrLn, print,
+ -- *** Input functions
+ getChar,
+ getLine, getContents, interact,
+ -- *** Files
+ FilePath,
+ readFile, writeFile, appendFile, readIO, readLn,
+ -- ** Exception handling in the I\/O monad
+ IOError, ioError, userError,
+
+ ) where
+
+import Control.Monad
+import System.IO
+import System.IO.Error
+import Data.Either
+import Data.Maybe
+import Data.Traversable ( Traversable(..) )
+import Data.Tuple
+
+import Text.Read
+import GHC.Enum
+import GHC.Num
+import GHC.Real
+import GHC.Float
+import GHC.Show
+
+#if MIN_VERSION_base(4,8,0)
+import Data.Foldable ( Foldable(..) )
+import Data.Functor ( (<$>) )
+import Data.List
+import GHC.Base hiding ( foldr, mapM, sequence )
+#else
+import Data.Foldable ( Foldable(..), elem, maximum, minimum, sum, product )
+import Data.List hiding ( elem, maximum, minimum, sum, product )
+import Control.Applicative
+import Data.Monoid
+import Data.Word
+import GHC.Base
+import GHC.Err (undefined)
+
+infixr 0 $!
+($!) :: (a -> b) -> a -> b
+f $! x = let !vx = x in f vx -- see #2273
+
+#endif
diff --git a/src/Ganeti/Query/Exec.hs b/src/Ganeti/Query/Exec.hs
index 4b2945b..79889ff 100644
--- a/src/Ganeti/Query/Exec.hs
+++ b/src/Ganeti/Query/Exec.hs
@@ -60,12 +60,14 @@ module Ganeti.Query.Exec
, forkJobProcess
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent (rtsSupportsBoundThreads)
import Control.Concurrent.Lifted (threadDelay)
import Control.Exception (finally)
import Control.Monad
import Control.Monad.Error.Class (MonadError(..))
-import Data.Functor
import qualified Data.Map as M
import Data.Maybe (listToMaybe, mapMaybe)
import System.Directory (getDirectoryContents)
diff --git a/src/Ganeti/Query/Filter.hs b/src/Ganeti/Query/Filter.hs
index aaae425..cddc4d8 100644
--- a/src/Ganeti/Query/Filter.hs
+++ b/src/Ganeti/Query/Filter.hs
@@ -66,13 +66,14 @@ module Ganeti.Query.Filter
, FilterOp(..)
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Monad (liftM, mzero)
import Control.Monad.Trans.Maybe (MaybeT, runMaybeT)
import Control.Monad.Trans.Class (lift)
import qualified Data.Map as Map
import Data.Maybe
-import Data.Traversable (traverse)
import Text.JSON (JSValue(..), fromJSString)
import Text.JSON.Pretty (pp_value)
import qualified Text.Regex.PCRE as PCRE
diff --git a/src/Ganeti/Query/Language.hs b/src/Ganeti/Query/Language.hs
index 4b85ee7..3c6919f 100644
--- a/src/Ganeti/Query/Language.hs
+++ b/src/Ganeti/Query/Language.hs
@@ -65,10 +65,11 @@ module Ganeti.Query.Language
, checkRS
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.DeepSeq
import Data.Foldable
-import Data.Traversable (Traversable)
import Data.Ratio (numerator, denominator)
import Text.JSON.Pretty (pp_value)
import Text.JSON.Types
diff --git a/src/Ganeti/Query/Node.hs b/src/Ganeti/Query/Node.hs
index 17c3469..ecf5dc2 100644
--- a/src/Ganeti/Query/Node.hs
+++ b/src/Ganeti/Query/Node.hs
@@ -38,8 +38,10 @@ module Ganeti.Query.Node
, collectLiveData
) where
-import Control.Applicative
-import Data.List
+import Prelude ()
+import Ganeti.Prelude
+
+import Data.List (intercalate)
import Data.Maybe
import qualified Data.Map as Map
import qualified Text.JSON as J
diff --git a/src/Ganeti/Query/Server.hs b/src/Ganeti/Query/Server.hs
index bf63cfa..df5da87 100644
--- a/src/Ganeti/Query/Server.hs
+++ b/src/Ganeti/Query/Server.hs
@@ -40,7 +40,9 @@ module Ganeti.Query.Server
, prepMain
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent
import Control.Exception
import Control.Lens ((.~))
diff --git a/src/Ganeti/Ssconf.hs b/src/Ganeti/Ssconf.hs
index 99ad3e5..e3fc864 100644
--- a/src/Ganeti/Ssconf.hs
+++ b/src/Ganeti/Ssconf.hs
@@ -54,8 +54,10 @@ module Ganeti.Ssconf
, emptySSConf
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow ((&&&))
-import Control.Applicative ((<$>))
import Control.Exception
import Control.Monad (forM, liftM)
import qualified Data.Map as M
diff --git a/src/Ganeti/Storage/Diskstats/Parser.hs
b/src/Ganeti/Storage/Diskstats/Parser.hs
index 64d3885..6f64b04 100644
--- a/src/Ganeti/Storage/Diskstats/Parser.hs
+++ b/src/Ganeti/Storage/Diskstats/Parser.hs
@@ -36,7 +36,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}
module Ganeti.Storage.Diskstats.Parser (diskstatsParser) where
-import Control.Applicative ((<*>), (<*), (<$>))
+import Prelude ()
+import Ganeti.Prelude
+
import qualified Data.Attoparsec.Text as A
import qualified Data.Attoparsec.Combinator as AC
import Data.Attoparsec.Text (Parser)
diff --git a/src/Ganeti/Storage/Drbd/Parser.hs
b/src/Ganeti/Storage/Drbd/Parser.hs
index c9c8dce..8dee72c 100644
--- a/src/Ganeti/Storage/Drbd/Parser.hs
+++ b/src/Ganeti/Storage/Drbd/Parser.hs
@@ -36,7 +36,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}
module Ganeti.Storage.Drbd.Parser (drbdStatusParser, commaIntParser) where
-import Control.Applicative ((<*>), (*>), (<*), (<$>), (<|>), pure)
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative ((<|>))
import qualified Data.Attoparsec.Text as A
import qualified Data.Attoparsec.Combinator as AC
import Data.Attoparsec.Text (Parser)
diff --git a/src/Ganeti/Storage/Lvm/LVParser.hs
b/src/Ganeti/Storage/Lvm/LVParser.hs
index 470c41a..cf31431 100644
--- a/src/Ganeti/Storage/Lvm/LVParser.hs
+++ b/src/Ganeti/Storage/Lvm/LVParser.hs
@@ -37,7 +37,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}
module Ganeti.Storage.Lvm.LVParser (lvParser, lvCommand, lvParams) where
-import Control.Applicative ((<*>), (*>), (<*), (<$>))
+import Prelude ()
+import Ganeti.Prelude
+
import qualified Data.Attoparsec.Text as A
import qualified Data.Attoparsec.Combinator as AC
import Data.Attoparsec.Text (Parser)
diff --git a/src/Ganeti/THH.hs b/src/Ganeti/THH.hs
index 26ab165..fd7857e 100644
--- a/src/Ganeti/THH.hs
+++ b/src/Ganeti/THH.hs
@@ -76,11 +76,14 @@ module Ganeti.THH ( declareSADT
, ssconfConstructorName
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow ((&&&), second)
import Control.Applicative
import Control.Lens.Type (Lens, Lens')
import Control.Lens (lens, set, element)
-import Control.Monad
+import Control.Monad (liftM, replicateM, when, unless)
import Control.Monad.Base () -- Needed to prevent spurious GHC linking errors.
import Control.Monad.Writer (tell)
import qualified Control.Monad.Trans as MT
@@ -89,10 +92,9 @@ import Data.Attoparsec.Text ()
-- See issue #683 and https://ghc.haskell.org/trac/ghc/ticket/4899
import Data.Char
import Data.Function (on)
-import Data.List
+import Data.List (intercalate, groupBy, stripPrefix, sort, nub)
import Data.Maybe
import qualified Data.Map as M
-import Data.Monoid
import qualified Data.Set as S
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (lift)
diff --git a/src/Ganeti/THH/HsRPC.hs b/src/Ganeti/THH/HsRPC.hs
index 8a352fa..8bcdb4d 100644
--- a/src/Ganeti/THH/HsRPC.hs
+++ b/src/Ganeti/THH/HsRPC.hs
@@ -43,11 +43,13 @@ module Ganeti.THH.HsRPC
, mkRpcCalls
) where
-import Control.Applicative
-import Control.Monad
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Monad (liftM)
import Control.Monad.Base
import Control.Monad.Error.Class (MonadError)
-import Control.Monad.Reader
+import Control.Monad.Reader (ReaderT, runReaderT, ask)
import Control.Monad.Trans.Control
import Language.Haskell.TH
import qualified Text.JSON as J
diff --git a/src/Ganeti/THH/PyRPC.hs b/src/Ganeti/THH/PyRPC.hs
index eee1554..81e9223 100644
--- a/src/Ganeti/THH/PyRPC.hs
+++ b/src/Ganeti/THH/PyRPC.hs
@@ -40,9 +40,11 @@ module Ganeti.THH.PyRPC
, genPyUDSRpcStubStr
) where
-import Control.Monad
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Monad (liftM, zipWithM)
import Data.Char (toLower, toUpper)
-import Data.Functor
import Data.Maybe (fromMaybe)
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (liftString)
diff --git a/src/Ganeti/THH/PyType.hs b/src/Ganeti/THH/PyType.hs
index a3dbe44..9a32f16 100644
--- a/src/Ganeti/THH/PyType.hs
+++ b/src/Ganeti/THH/PyType.hs
@@ -39,8 +39,10 @@ module Ganeti.THH.PyType
, pyOptionalType
) where
-import Control.Applicative
-import Control.Monad
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Monad (ap, liftM)
import Data.List (intercalate)
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (Lift(..))
diff --git a/src/Ganeti/THH/RPC.hs b/src/Ganeti/THH/RPC.hs
index 4b019ee..1cb63ec 100644
--- a/src/Ganeti/THH/RPC.hs
+++ b/src/Ganeti/THH/RPC.hs
@@ -42,7 +42,9 @@ module Ganeti.THH.RPC
, mkRpcM
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow ((&&&))
import Control.Monad
import Control.Monad.Error.Class (MonadError(..))
diff --git a/src/Ganeti/Types.hs b/src/Ganeti/Types.hs
index 52c30f1..1cfcfb0 100644
--- a/src/Ganeti/Types.hs
+++ b/src/Ganeti/Types.hs
@@ -188,7 +188,9 @@ module Ganeti.Types
, TagsObject(..)
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Monad (liftM)
import qualified Text.JSON as JSON
import Text.JSON (JSON, readJSON, showJSON)
diff --git a/src/Ganeti/UDSServer.hs b/src/Ganeti/UDSServer.hs
index 8e27c5a..36f0ac1 100644
--- a/src/Ganeti/UDSServer.hs
+++ b/src/Ganeti/UDSServer.hs
@@ -70,7 +70,9 @@ module Ganeti.UDSServer
, listener
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent.Lifted (fork, yield)
import Control.Monad.Base
import Control.Monad.Trans.Control
@@ -81,7 +83,7 @@ import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.UTF8 as UTF8
import qualified Data.ByteString.Lazy.UTF8 as UTF8L
import Data.IORef
-import Data.List
+import Data.List (isInfixOf)
import Data.Word (Word8)
import qualified Network.Socket as S
import System.Directory (removeFile)
diff --git a/src/Ganeti/Utils.hs b/src/Ganeti/Utils.hs
index 0c599bb..d217914 100644
--- a/src/Ganeti/Utils.hs
+++ b/src/Ganeti/Utils.hs
@@ -101,7 +101,9 @@ module Ganeti.Utils
, threadDelaySeconds
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent
import Control.Exception (try, bracket)
import Control.Monad
@@ -114,7 +116,13 @@ import Data.IORef
#if MIN_VERSION_base(4,8,0)
import Data.List hiding (isSubsequenceOf)
#else
-import Data.List
+import Data.List (intercalate
+ , find
+ , foldl'
+ , transpose
+ , sortBy
+ , isPrefixOf
+ , maximumBy)
#endif
import qualified Data.Map as M
import Data.Maybe (fromMaybe)
diff --git a/src/Ganeti/Utils/MultiMap.hs b/src/Ganeti/Utils/MultiMap.hs
index 0f97e26..6f46e1d 100644
--- a/src/Ganeti/Utils/MultiMap.hs
+++ b/src/Ganeti/Utils/MultiMap.hs
@@ -54,13 +54,13 @@ module Ganeti.Utils.MultiMap
, values
) where
-import Prelude hiding (lookup, null, elem)
+import Prelude ()
+import Ganeti.Prelude hiding (lookup, null, elem)
import Control.Monad
import qualified Data.Foldable as F
import qualified Data.Map as M
import Data.Maybe (fromMaybe, isJust)
-import Data.Monoid
import qualified Data.Set as S
import qualified Text.JSON as J
diff --git a/src/Ganeti/Utils/Random.hs b/src/Ganeti/Utils/Random.hs
index 500e00d..bdccd4e 100644
--- a/src/Ganeti/Utils/Random.hs
+++ b/src/Ganeti/Utils/Random.hs
@@ -38,7 +38,9 @@ module Ganeti.Utils.Random
, delayRandom
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Concurrent (threadDelay)
import Control.Monad
import Control.Monad.State
diff --git a/src/Ganeti/Utils/Validate.hs b/src/Ganeti/Utils/Validate.hs
index 8dda1b0..cab6b90 100644
--- a/src/Ganeti/Utils/Validate.hs
+++ b/src/Ganeti/Utils/Validate.hs
@@ -51,7 +51,9 @@ module Ganeti.Utils.Validate
, validate'
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow
import Control.Monad
import Control.Monad.Error.Class (MonadError(..))
diff --git a/src/Ganeti/WConfd/ConfigModifications.hs
b/src/Ganeti/WConfd/ConfigModifications.hs
index e476c30..13a7df2 100644
--- a/src/Ganeti/WConfd/ConfigModifications.hs
+++ b/src/Ganeti/WConfd/ConfigModifications.hs
@@ -40,7 +40,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Ganeti.WConfd.ConfigModifications where
-import Control.Applicative ((<$>))
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Lens (_2)
import Control.Lens.Getter ((^.))
import Control.Lens.Setter (Setter, (.~), (%~), (+~), over)
@@ -51,7 +53,7 @@ import Control.Monad.Error.Class (throwError, MonadError)
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.State (StateT, get, put, modify,
runStateT, execStateT)
-import Data.Foldable (fold, foldMap)
+import Data.Foldable (fold)
import Data.List (elemIndex)
import Data.Maybe (isJust, maybeToList, fromMaybe, fromJust)
import Language.Haskell.TH (Name)
diff --git a/src/Ganeti/WConfd/ConfigState.hs b/src/Ganeti/WConfd/ConfigState.hs
index fa6e754..b41fda1 100644
--- a/src/Ganeti/WConfd/ConfigState.hs
+++ b/src/Ganeti/WConfd/ConfigState.hs
@@ -43,7 +43,9 @@ module Ganeti.WConfd.ConfigState
, needsFullDist
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Data.Function (on)
import System.Time (ClockTime(..))
diff --git a/src/Ganeti/WConfd/ConfigWriter.hs
b/src/Ganeti/WConfd/ConfigWriter.hs
index ba7a84d..92fbf34 100644
--- a/src/Ganeti/WConfd/ConfigWriter.hs
+++ b/src/Ganeti/WConfd/ConfigWriter.hs
@@ -43,7 +43,10 @@ module Ganeti.WConfd.ConfigWriter
, distSSConfAsyncTask
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Monad ((>=>), liftM, unless)
import Control.Monad.Base
import Control.Monad.Error.Class (MonadError)
import qualified Control.Monad.State.Strict as S
diff --git a/src/Ganeti/WConfd/Monad.hs b/src/Ganeti/WConfd/Monad.hs
index f028c84..a59320f 100644
--- a/src/Ganeti/WConfd/Monad.hs
+++ b/src/Ganeti/WConfd/Monad.hs
@@ -68,7 +68,9 @@ module Ganeti.WConfd.Monad
, readTempResState
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow ((&&&), second)
import Control.Concurrent (forkIO, myThreadId)
import Control.Exception.Lifted (bracket)
diff --git a/src/Ganeti/WConfd/TempRes.hs b/src/Ganeti/WConfd/TempRes.hs
index e478a3b..5aa6343 100644
--- a/src/Ganeti/WConfd/TempRes.hs
+++ b/src/Ganeti/WConfd/TempRes.hs
@@ -73,7 +73,9 @@ module Ganeti.WConfd.TempRes
, reserved
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Lens.At
import Control.Monad.Error.Class (MonadError(..))
import Control.Monad.State
diff --git a/test/hs/Test/Ganeti/BasicTypes.hs
b/test/hs/Test/Ganeti/BasicTypes.hs
index f29d16f..e9ed399 100644
--- a/test/hs/Test/Ganeti/BasicTypes.hs
+++ b/test/hs/Test/Ganeti/BasicTypes.hs
@@ -37,10 +37,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.BasicTypes (testBasicTypes) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck hiding (Result)
import Test.QuickCheck.Function
-import Control.Applicative
import Control.Monad
import Test.Ganeti.TestHelper
diff --git a/test/hs/Test/Ganeti/Confd/Types.hs
b/test/hs/Test/Ganeti/Confd/Types.hs
index 3bc7167..6e7cb29 100644
--- a/test/hs/Test/Ganeti/Confd/Types.hs
+++ b/test/hs/Test/Ganeti/Confd/Types.hs
@@ -42,7 +42,9 @@ module Test.Ganeti.Confd.Types
, ConfdReqQ(..)
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck
import Test.HUnit
import qualified Text.JSON as J
diff --git a/test/hs/Test/Ganeti/HTools/Instance.hs
b/test/hs/Test/Ganeti/HTools/Instance.hs
index dcd4b79..84a5f5c 100644
--- a/test/hs/Test/Ganeti/HTools/Instance.hs
+++ b/test/hs/Test/Ganeti/HTools/Instance.hs
@@ -44,8 +44,10 @@ module Test.Ganeti.HTools.Instance
, Instance.Instance(..)
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Arrow ((&&&))
-import Control.Applicative ((<$>))
import Control.Monad (liftM)
import Test.QuickCheck hiding (Result)
diff --git a/test/hs/Test/Ganeti/HTools/Types.hs
b/test/hs/Test/Ganeti/HTools/Types.hs
index 7708b0a..f643f3b 100644
--- a/test/hs/Test/Ganeti/HTools/Types.hs
+++ b/test/hs/Test/Ganeti/HTools/Types.hs
@@ -45,10 +45,12 @@ module Test.Ganeti.HTools.Types
, nullIPolicy
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck hiding (Result)
import Test.HUnit
-import Control.Applicative
import Control.Monad (replicateM)
import Test.Ganeti.TestHelper
diff --git a/test/hs/Test/Ganeti/JQScheduler.hs
b/test/hs/Test/Ganeti/JQScheduler.hs
index a0aa650..3d79877 100644
--- a/test/hs/Test/Ganeti/JQScheduler.hs
+++ b/test/hs/Test/Ganeti/JQScheduler.hs
@@ -37,14 +37,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.JQScheduler (testJQScheduler) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Lens ((&), (.~), _2)
import Data.List (inits)
import Data.Maybe
import qualified Data.Map as Map
import Data.Set (Set, difference)
import qualified Data.Set as Set
-import Data.Traversable (traverse)
import Text.JSON (JSValue(..))
import Test.HUnit
import Test.QuickCheck
diff --git a/test/hs/Test/Ganeti/JQueue/Objects.hs
b/test/hs/Test/Ganeti/JQueue/Objects.hs
index 13e0f0f..6d56a5d 100644
--- a/test/hs/Test/Ganeti/JQueue/Objects.hs
+++ b/test/hs/Test/Ganeti/JQueue/Objects.hs
@@ -39,7 +39,9 @@ module Test.Ganeti.JQueue.Objects
, genJobId
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck as QuickCheck
import Text.JSON
diff --git a/test/hs/Test/Ganeti/Locking/Allocation.hs
b/test/hs/Test/Ganeti/Locking/Allocation.hs
index a4ce21b..498d149 100644
--- a/test/hs/Test/Ganeti/Locking/Allocation.hs
+++ b/test/hs/Test/Ganeti/Locking/Allocation.hs
@@ -42,7 +42,9 @@ module Test.Ganeti.Locking.Allocation
, requestSucceeded
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import qualified Data.Foldable as F
import qualified Data.Map as M
import Data.Maybe (fromMaybe)
diff --git a/test/hs/Test/Ganeti/Locking/Locks.hs
b/test/hs/Test/Ganeti/Locking/Locks.hs
index 732779f..1c992ff 100644
--- a/test/hs/Test/Ganeti/Locking/Locks.hs
+++ b/test/hs/Test/Ganeti/Locking/Locks.hs
@@ -37,7 +37,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Locking.Locks (testLocking_Locks) where
-import Control.Applicative ((<$>), (<*>), liftA2)
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (liftA2)
import Control.Monad (liftM)
import System.Posix.Types (CPid)
diff --git a/test/hs/Test/Ganeti/Locking/Waiting.hs
b/test/hs/Test/Ganeti/Locking/Waiting.hs
index ee1a6b0..1b06225 100644
--- a/test/hs/Test/Ganeti/Locking/Waiting.hs
+++ b/test/hs/Test/Ganeti/Locking/Waiting.hs
@@ -37,7 +37,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Locking.Waiting (testLocking_Waiting) where
-import Control.Applicative ((<$>), (<*>), liftA2)
+import Prelude ()
+import Ganeti.Prelude
+
+import Control.Applicative (liftA2)
import Control.Monad (liftM)
import qualified Data.Map as M
import qualified Data.Set as S
diff --git a/test/hs/Test/Ganeti/Luxi.hs b/test/hs/Test/Ganeti/Luxi.hs
index c269b8c..47736f4 100644
--- a/test/hs/Test/Ganeti/Luxi.hs
+++ b/test/hs/Test/Ganeti/Luxi.hs
@@ -37,12 +37,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Luxi (testLuxi) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.HUnit
import Test.QuickCheck
import Test.QuickCheck.Monadic (monadicIO, run, stop)
import Data.List
-import Control.Applicative
import Control.Concurrent (forkIO)
import Control.Exception (bracket)
import qualified Text.JSON as J
diff --git a/test/hs/Test/Ganeti/Objects.hs b/test/hs/Test/Ganeti/Objects.hs
index 857f822..db43835 100644
--- a/test/hs/Test/Ganeti/Objects.hs
+++ b/test/hs/Test/Ganeti/Objects.hs
@@ -49,11 +49,13 @@ module Test.Ganeti.Objects
, genBitStringMaxLen
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck
import qualified Test.HUnit as HUnit
-import Control.Applicative
-import Control.Monad
+import Control.Monad (liftM, when)
import Data.Char
import qualified Data.List as List
import qualified Data.Map as Map
diff --git a/test/hs/Test/Ganeti/OpCodes.hs b/test/hs/Test/Ganeti/OpCodes.hs
index 1fd4d5e..43e66b3 100644
--- a/test/hs/Test/Ganeti/OpCodes.hs
+++ b/test/hs/Test/Ganeti/OpCodes.hs
@@ -40,11 +40,13 @@ module Test.Ganeti.OpCodes
, OpCodes.OpCode(..)
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.HUnit as HUnit
import Test.QuickCheck as QuickCheck
-import Control.Applicative
-import Control.Monad
+import Control.Monad (when)
import Data.Char
import Data.List
import qualified Data.Map as Map
diff --git a/test/hs/Test/Ganeti/Query/Language.hs
b/test/hs/Test/Ganeti/Query/Language.hs
index 9556bc3..677990a 100644
--- a/test/hs/Test/Ganeti/Query/Language.hs
+++ b/test/hs/Test/Ganeti/Query/Language.hs
@@ -41,10 +41,12 @@ module Test.Ganeti.Query.Language
, genJSValue
) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.HUnit (Assertion, assertEqual)
import Test.QuickCheck
-import Control.Applicative
import Control.Arrow (second)
import Text.JSON
diff --git a/test/hs/Test/Ganeti/Rpc.hs b/test/hs/Test/Ganeti/Rpc.hs
index 54711d7..86b3ece 100644
--- a/test/hs/Test/Ganeti/Rpc.hs
+++ b/test/hs/Test/Ganeti/Rpc.hs
@@ -37,10 +37,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Rpc (testRpc) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck
import Test.QuickCheck.Monadic (monadicIO, run, stop)
-import Control.Applicative
import qualified Data.Map as Map
import Test.Ganeti.TestHelper
diff --git a/test/hs/Test/Ganeti/SlotMap.hs b/test/hs/Test/Ganeti/SlotMap.hs
index 295240d..7897c72 100644
--- a/test/hs/Test/Ganeti/SlotMap.hs
+++ b/test/hs/Test/Ganeti/SlotMap.hs
@@ -42,16 +42,15 @@ module Test.Ganeti.SlotMap
, overfullKeys
) where
-import Prelude hiding (all)
+import Prelude ()
+import Ganeti.Prelude hiding (all)
-import Control.Applicative
import Control.Monad
import Data.Foldable (all)
import qualified Data.Map as Map
import Data.Map (Map, member, keys, keysSet)
import Data.Set (Set, size, union)
import qualified Data.Set as Set
-import Data.Traversable (traverse)
import Test.HUnit
import Test.QuickCheck
diff --git a/test/hs/Test/Ganeti/Storage/Diskstats/Parser.hs
b/test/hs/Test/Ganeti/Storage/Diskstats/Parser.hs
index 8193ae9..4a63b02 100644
--- a/test/hs/Test/Ganeti/Storage/Diskstats/Parser.hs
+++ b/test/hs/Test/Ganeti/Storage/Diskstats/Parser.hs
@@ -35,13 +35,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Storage.Diskstats.Parser (testBlock_Diskstats_Parser) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck as QuickCheck hiding (Result)
import Test.HUnit
import Test.Ganeti.TestHelper
import Test.Ganeti.TestCommon
-import Control.Applicative ((<*>), (<$>))
import qualified Data.Attoparsec.Text as A
import Data.Text (pack)
import Text.Printf
diff --git a/test/hs/Test/Ganeti/Storage/Lvm/LVParser.hs
b/test/hs/Test/Ganeti/Storage/Lvm/LVParser.hs
index 9a00799..bb1ec64 100644
--- a/test/hs/Test/Ganeti/Storage/Lvm/LVParser.hs
+++ b/test/hs/Test/Ganeti/Storage/Lvm/LVParser.hs
@@ -35,13 +35,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Storage.Lvm.LVParser (testStorage_Lvm_LVParser) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck as QuickCheck hiding (Result)
import Test.HUnit
import Test.Ganeti.TestHelper
import Test.Ganeti.TestCommon
-import Control.Applicative ((<$>), (<*>))
import Data.List (intercalate)
import Ganeti.Storage.Lvm.LVParser
diff --git a/test/hs/Test/Ganeti/TestCommon.hs
b/test/hs/Test/Ganeti/TestCommon.hs
index bcd8421..a3f8740 100644
--- a/test/hs/Test/Ganeti/TestCommon.hs
+++ b/test/hs/Test/Ganeti/TestCommon.hs
@@ -92,9 +92,11 @@ module Test.Ganeti.TestCommon
, counterexample
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Control.Exception (catchJust)
-import Control.Monad
+import Control.Monad (guard, liftM, foldM)
import Data.Attoparsec.Text (Parser, parseOnly)
import Data.List
import qualified Data.Map as M
diff --git a/test/hs/Test/Ganeti/TestHelper.hs
b/test/hs/Test/Ganeti/TestHelper.hs
index 399ad58..01be610 100644
--- a/test/hs/Test/Ganeti/TestHelper.hs
+++ b/test/hs/Test/Ganeti/TestHelper.hs
@@ -39,7 +39,9 @@ module Test.Ganeti.TestHelper
, genArbitrary
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import Data.List (stripPrefix, isPrefixOf)
import Data.Maybe (fromMaybe)
import Test.Framework
diff --git a/test/hs/Test/Ganeti/Types.hs b/test/hs/Test/Ganeti/Types.hs
index 12f957a..5ce6dae 100644
--- a/test/hs/Test/Ganeti/Types.hs
+++ b/test/hs/Test/Ganeti/Types.hs
@@ -47,7 +47,9 @@ module Test.Ganeti.Types
, genReasonTrail
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import System.Time (ClockTime(..))
import Test.QuickCheck as QuickCheck hiding (Result)
diff --git a/test/hs/Test/Ganeti/Utils.hs b/test/hs/Test/Ganeti/Utils.hs
index bee30e2..c65db11 100644
--- a/test/hs/Test/Ganeti/Utils.hs
+++ b/test/hs/Test/Ganeti/Utils.hs
@@ -37,10 +37,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.Utils (testUtils) where
+import Prelude ()
+import Ganeti.Prelude
+
import Test.QuickCheck hiding (Result)
import Test.HUnit
-import Control.Applicative ((<$>), (<*>))
import Data.Char (isSpace)
import qualified Data.Either as Either
#if MIN_VERSION_base(4,8,0)
diff --git a/test/hs/Test/Ganeti/Utils/MultiMap.hs
b/test/hs/Test/Ganeti/Utils/MultiMap.hs
index 3656841..02dfc46 100644
--- a/test/hs/Test/Ganeti/Utils/MultiMap.hs
+++ b/test/hs/Test/Ganeti/Utils/MultiMap.hs
@@ -39,7 +39,9 @@ module Test.Ganeti.Utils.MultiMap
( testUtils_MultiMap
) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
+
import qualified Data.Set as S
import qualified Data.Map as M
diff --git a/test/hs/Test/Ganeti/WConfd/TempRes.hs
b/test/hs/Test/Ganeti/WConfd/TempRes.hs
index 768804c..8b8745b 100644
--- a/test/hs/Test/Ganeti/WConfd/TempRes.hs
+++ b/test/hs/Test/Ganeti/WConfd/TempRes.hs
@@ -37,7 +37,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Test.Ganeti.WConfd.TempRes (testWConfd_TempRes) where
-import Control.Applicative
+import Prelude ()
+import Ganeti.Prelude
import Test.QuickCheck
diff --git a/test/hs/htest.hs b/test/hs/htest.hs
index 86d193e..ca83366 100644
--- a/test/hs/htest.hs
+++ b/test/hs/htest.hs
@@ -34,7 +34,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Main(main) where
-import Data.Monoid (mappend)
+import Prelude ()
+import Ganeti.Prelude
+
import Test.Framework
import System.Environment (getArgs)
import System.Log.Logger
--
2.6.0.rc0.131.gf624c3d