diff --git a/Distribution/Client/Config.hs b/Distribution/Client/Config.hs
--- a/Distribution/Client/Config.hs
+++ b/Distribution/Client/Config.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Config
@@ -91,8 +92,10 @@
          ( partition, find, foldl' )
 import Data.Maybe
          ( fromMaybe )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(..) )
+#endif
 import Control.Monad
          ( unless, foldM, liftM, liftM2 )
 import qualified Distribution.Compat.ReadP as Parse
diff --git a/Distribution/Client/Configure.hs b/Distribution/Client/Configure.hs
--- a/Distribution/Client/Configure.hs
+++ b/Distribution/Client/Configure.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Configure
@@ -55,7 +56,9 @@
 import Distribution.Version
          ( Version(..), VersionRange, orLaterVersion )
 
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid (Monoid(..))
+#endif
 
 -- | Choose the Cabal version such that the setup scripts compiled against this
 -- version will support the given command-line flags.
diff --git a/Distribution/Client/Dependency/Modular/Preference.hs b/Distribution/Client/Dependency/Modular/Preference.hs
--- a/Distribution/Client/Dependency/Modular/Preference.hs
+++ b/Distribution/Client/Dependency/Modular/Preference.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 module Distribution.Client.Dependency.Modular.Preference where
 
 -- Reordering or pruning the tree in order to prefer or make certain choices.
 
 import qualified Data.List as L
 import qualified Data.Map as M
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
+#endif
 import Data.Ord
 
 import Distribution.Client.Dependency.Types
diff --git a/Distribution/Client/Dependency/TopDown.hs b/Distribution/Client/Dependency/TopDown.hs
--- a/Distribution/Client/Dependency/TopDown.hs
+++ b/Distribution/Client/Dependency/TopDown.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Dependency.Types
@@ -59,8 +60,10 @@
          ( foldl', maximumBy, minimumBy, nub, sort, sortBy, groupBy )
 import Data.Maybe
          ( fromJust, fromMaybe, catMaybes )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(mempty) )
+#endif
 import Control.Monad
          ( guard )
 import qualified Data.Set as Set
diff --git a/Distribution/Client/Dependency/TopDown/Constraints.hs b/Distribution/Client/Dependency/TopDown/Constraints.hs
--- a/Distribution/Client/Dependency/TopDown/Constraints.hs
+++ b/Distribution/Client/Dependency/TopDown/Constraints.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Dependency.TopDown.Constraints
@@ -35,8 +36,10 @@
 import Distribution.Client.Utils
          ( mergeBy, MergeResult(..) )
 
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(mempty) )
+#endif
 import Data.Either
          ( partitionEithers )
 import qualified Data.Map as Map
diff --git a/Distribution/Client/Dependency/Types.hs b/Distribution/Client/Dependency/Types.hs
--- a/Distribution/Client/Dependency/Types.hs
+++ b/Distribution/Client/Dependency/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP           #-}
 {-# LANGUAGE DeriveFunctor #-}
 -----------------------------------------------------------------------------
 -- |
@@ -29,13 +30,20 @@
     foldProgress,
   ) where
 
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative
-         ( Applicative(..), Alternative(..) )
+         ( Applicative(..) )
+#endif
+import Control.Applicative
+         ( Alternative(..) )
 
+
 import Data.Char
          ( isAlpha, toLower )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(..) )
+#endif
 
 import Distribution.Client.Types
          ( OptionalStanza(..), SourcePackage(..) )
diff --git a/Distribution/Client/Exec.hs b/Distribution/Client/Exec.hs
--- a/Distribution/Client/Exec.hs
+++ b/Distribution/Client/Exec.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Exec
@@ -30,8 +31,10 @@
 import Distribution.Verbosity (Verbosity)
 
 import System.FilePath (searchPathSeparator, (</>))
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative ((<$>))
 import Data.Monoid (mempty)
+#endif
 
 
 -- | Execute the given command in the package's environment.
diff --git a/Distribution/Client/Freeze.hs b/Distribution/Client/Freeze.hs
--- a/Distribution/Client/Freeze.hs
+++ b/Distribution/Client/Freeze.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Freeze
@@ -54,8 +55,10 @@
 import Control.Monad
          ( when )
 import qualified Data.ByteString.Lazy.Char8 as BS.Char8
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( mempty )
+#endif
 import Data.Version
          ( showVersion )
 import Distribution.Version
diff --git a/Distribution/Client/Get.hs b/Distribution/Client/Get.hs
--- a/Distribution/Client/Get.hs
+++ b/Distribution/Client/Get.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Get
@@ -51,8 +52,10 @@
 import qualified Data.Map
 import Data.Maybe
          ( listToMaybe, mapMaybe )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( mempty )
+#endif
 import Data.Ord
          ( comparing )
 import System.Directory
diff --git a/Distribution/Client/IndexUtils.hs b/Distribution/Client/IndexUtils.hs
--- a/Distribution/Client/IndexUtils.hs
+++ b/Distribution/Client/IndexUtils.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.IndexUtils
@@ -63,7 +64,9 @@
 import Data.Char   (isAlphaNum)
 import Data.Maybe  (mapMaybe, fromMaybe)
 import Data.List   (isPrefixOf)
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid (Monoid(..))
+#endif
 import qualified Data.Map as Map
 import Control.Monad (MonadPlus(mplus), when, liftM)
 import Control.Exception (evaluate)
diff --git a/Distribution/Client/Init.hs b/Distribution/Client/Init.hs
--- a/Distribution/Client/Init.hs
+++ b/Distribution/Client/Init.hs
@@ -40,10 +40,12 @@
 import Data.Function
   ( on )
 import qualified Data.Map as M
+#if !MIN_VERSION_base(4,8,0)
 import Data.Traversable
   ( traverse )
 import Control.Applicative
   ( (<$>) )
+#endif
 import Control.Monad
   ( when, unless, (>=>), join, forM_ )
 import Control.Arrow
diff --git a/Distribution/Client/Init/Heuristics.hs b/Distribution/Client/Init/Heuristics.hs
--- a/Distribution/Client/Init/Heuristics.hs
+++ b/Distribution/Client/Init/Heuristics.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Init.Heuristics
@@ -35,14 +36,18 @@
 import Language.Haskell.Extension ( Extension )
 
 import Distribution.Client.Types ( packageDescription, SourcePackageDb(..) )
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative ( pure, (<$>), (<*>) )
+#endif
 import Control.Arrow ( first )
 import Control.Monad ( liftM )
 import Data.Char   ( isAlphaNum, isNumber, isUpper, isLower, isSpace )
 import Data.Either ( partitionEithers )
 import Data.List   ( isInfixOf, isPrefixOf, isSuffixOf, sortBy )
 import Data.Maybe  ( mapMaybe, catMaybes, maybeToList )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid ( mempty, mappend, mconcat, )
+#endif
 import Data.Ord    ( comparing )
 import qualified Data.Set as Set ( fromList, toList )
 import System.Directory ( getCurrentDirectory, getDirectoryContents,
diff --git a/Distribution/Client/Init/Types.hs b/Distribution/Client/Init/Types.hs
--- a/Distribution/Client/Init/Types.hs
+++ b/Distribution/Client/Init/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Init.Types
@@ -27,7 +28,9 @@
 import qualified Distribution.Compat.ReadP as Parse
 import Distribution.Text
 
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
+#endif
 
 -- | InitFlags is really just a simple type to represent certain
 --   portions of a .cabal file.  Rather than have a flag for EVERY
diff --git a/Distribution/Client/Install.hs b/Distribution/Client/Install.hs
--- a/Distribution/Client/Install.hs
+++ b/Distribution/Client/Install.hs
@@ -45,8 +45,10 @@
          ( ExitCode(..) )
 import Distribution.Compat.Exception
          ( catchIO, catchExit )
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative
          ( (<$>) )
+#endif
 import Control.Monad
          ( forM_, when, unless )
 import System.Directory
diff --git a/Distribution/Client/PackageIndex.hs b/Distribution/Client/PackageIndex.hs
--- a/Distribution/Client/PackageIndex.hs
+++ b/Distribution/Client/PackageIndex.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP           #-}
 {-# LANGUAGE DeriveFunctor #-}
 -----------------------------------------------------------------------------
 -- |
@@ -63,7 +64,9 @@
 import qualified Data.Array as Array
 import Data.Array ((!))
 import Data.List (groupBy, sortBy, nub, isInfixOf)
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid (Monoid(..))
+#endif
 import Data.Maybe (isJust, isNothing, fromMaybe, catMaybes)
 
 import Distribution.Package
diff --git a/Distribution/Client/Run.hs b/Distribution/Client/Run.hs
--- a/Distribution/Client/Run.hs
+++ b/Distribution/Client/Run.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Run
@@ -28,7 +29,9 @@
 
 import qualified Distribution.Simple.GHCJS as GHCJS
 
+#if !MIN_VERSION_base(4,8,0)
 import Data.Functor                          ((<$>))
+#endif
 import Data.List                             (find)
 import System.Directory                      (getCurrentDirectory)
 import Distribution.Compat.Environment       (getEnvironment)
diff --git a/Distribution/Client/Sandbox.hs b/Distribution/Client/Sandbox.hs
--- a/Distribution/Client/Sandbox.hs
+++ b/Distribution/Client/Sandbox.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Sandbox
@@ -104,7 +105,9 @@
 import Data.IORef                             ( newIORef, writeIORef, readIORef )
 import Data.List                              ( delete, foldl' )
 import Data.Maybe                             ( fromJust, fromMaybe )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid                            ( mempty, mappend )
+#endif
 import Data.Word                              ( Word32 )
 import Numeric                                ( showHex )
 import System.Directory                       ( createDirectory
@@ -595,10 +598,10 @@
       die' message = die (message ++ installFailedInSandbox)
       -- TODO: use a better error message, remove duplication.
       installFailedInSandbox =
-        "Note: when using a sandbox, all packages are required to have \
-        \consistent dependencies. \
-        \Try reinstalling/unregistering the offending packages or \
-        \recreating the sandbox."
+        "Note: when using a sandbox, all packages are required to have "
+        ++ "consistent dependencies. "
+        ++ "Try reinstalling/unregistering the offending packages or "
+        ++ "recreating the sandbox."
       logMsg message rest = debugNoWrap verbosity message >> rest
 
       topHandler' = topHandlerWith $ \_ -> do
diff --git a/Distribution/Client/Sandbox/PackageEnvironment.hs b/Distribution/Client/Sandbox/PackageEnvironment.hs
--- a/Distribution/Client/Sandbox/PackageEnvironment.hs
+++ b/Distribution/Client/Sandbox/PackageEnvironment.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Sandbox.PackageEnvironment
@@ -60,7 +61,9 @@
 import Control.Monad                   ( foldM, liftM2, when, unless )
 import Data.List                       ( partition )
 import Data.Maybe                      ( isJust )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid                     ( Monoid(..) )
+#endif
 import Distribution.Compat.Exception   ( catchIO )
 import System.Directory                ( doesDirectoryExist, doesFileExist
                                        , renameFile )
diff --git a/Distribution/Client/Sandbox/Types.hs b/Distribution/Client/Sandbox/Types.hs
--- a/Distribution/Client/Sandbox/Types.hs
+++ b/Distribution/Client/Sandbox/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Sandbox.Types
@@ -15,7 +16,9 @@
 import qualified Distribution.Simple.PackageIndex as InstalledPackageIndex
 import Distribution.Client.Types (SourcePackage)
 
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
+#endif
 import qualified Data.Set as S
 
 -- | Are we using a sandbox?
diff --git a/Distribution/Client/Setup.hs b/Distribution/Client/Setup.hs
--- a/Distribution/Client/Setup.hs
+++ b/Distribution/Client/Setup.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Setup
@@ -92,11 +93,13 @@
 import Data.Char
          ( isSpace, isAlphaNum )
 import Data.List
-         ( intercalate, deleteFirstsBy )
+         ( intercalate, delete, deleteFirstsBy )
 import Data.Maybe
          ( listToMaybe, maybeToList, fromMaybe )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(..) )
+#endif
 import Control.Monad
          ( liftM )
 import System.FilePath
@@ -271,8 +274,7 @@
          (reqArgFlag "FILE")
 
       ,option [] ["sandbox-config-file"]
-         "Set an alternate location for the sandbox config file \
-         \(default: './cabal.sandbox.config')"
+         "Set an alternate location for the sandbox config file (default: './cabal.sandbox.config')"
          globalConfigFile (\v flags -> flags { globalSandboxConfigFile = v })
          (reqArgFlag "FILE")
 
@@ -368,7 +370,8 @@
 
 filterConfigureFlags :: ConfigFlags -> Version -> ConfigFlags
 filterConfigureFlags flags cabalLibVersion
-  | cabalLibVersion >= Version [1,19,2] [] = flags_latest
+  | cabalLibVersion >= Version [1,21,1] [] = flags_latest
+  -- ^ NB: we expect the latest version to be the most common case.
   | cabalLibVersion <  Version [1,3,10] [] = flags_1_3_10
   | cabalLibVersion <  Version [1,10,0] [] = flags_1_10_0
   | cabalLibVersion <  Version [1,14,0] [] = flags_1_14_0
@@ -389,6 +392,9 @@
                    , configProfLib = configProfLib flags
                    , configCoverage = NoFlag
                    , configLibCoverage = configCoverage flags
+                   -- HACK: See #2409.
+                   , configProgramPaths =
+                     ("cabalConfProf", "/TRUE") `delete` configProgramPaths flags
                    }
     -- Cabal < 1.19.2 doesn't know about '--exact-configuration'.
     flags_1_19_1 = flags_1_20_0 { configExactConfiguration = NoFlag }
diff --git a/Distribution/Client/SetupWrapper.hs b/Distribution/Client/SetupWrapper.hs
--- a/Distribution/Client/SetupWrapper.hs
+++ b/Distribution/Client/SetupWrapper.hs
@@ -97,11 +97,15 @@
 import System.IO           ( Handle, hPutStr )
 import System.Exit         ( ExitCode(..), exitWith )
 import System.Process      ( runProcess, waitForProcess )
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative ( (<$>), (<*>) )
+#endif
 import Control.Monad       ( when, unless )
 import Data.List           ( foldl1' )
 import Data.Maybe          ( fromMaybe, isJust )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid         ( mempty )
+#endif
 import Data.Char           ( isSpace )
 
 #ifdef mingw32_HOST_OS
diff --git a/Distribution/Client/Targets.hs b/Distribution/Client/Targets.hs
--- a/Distribution/Client/Targets.hs
+++ b/Distribution/Client/Targets.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Client.Targets
@@ -79,8 +80,10 @@
          ( listToMaybe )
 import Data.Either
          ( partitionEithers )
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
          ( Monoid(..) )
+#endif
 import qualified Data.Map as Map
 import qualified Data.ByteString.Lazy as BS
 import qualified Data.ByteString.Lazy.Char8 as BS.Char8
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -154,7 +154,9 @@
 import System.Directory         (doesFileExist, getCurrentDirectory)
 import Data.List                (intercalate)
 import Data.Maybe               (mapMaybe)
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid              (Monoid(..))
+#endif
 import Control.Monad            (when, unless)
 
 -- | Entry point
diff --git a/bootstrap.sh b/bootstrap.sh
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -190,7 +190,7 @@
                        # >= 2.0 && < 2.7
 NETWORK_URI_VER="2.6.0.1"; NETWORK_URI_VER_REGEXP="2\.6\."
                        # >= 2.6 && < 2.7
-CABAL_VER="1.22.1.0";  CABAL_VER_REGEXP="1\.22"
+CABAL_VER="1.22.2.0";  CABAL_VER_REGEXP="1\.22"
                        # >= 1.22 && < 1.23
 TRANS_VER="0.4.2.0";   TRANS_VER_REGEXP="0\.[4]\."
                        # >= 0.2.* && < 0.5
diff --git a/cabal-install.cabal b/cabal-install.cabal
--- a/cabal-install.cabal
+++ b/cabal-install.cabal
@@ -1,5 +1,5 @@
 Name:               cabal-install
-Version:            1.22.0.1
+Version:            1.22.2.0
 Synopsis:           The command-line interface for Cabal and Hackage.
 Description:
     The \'cabal\' command-line program simplifies the process of managing
@@ -129,9 +129,9 @@
         array      >= 0.1      && < 0.6,
         base       >= 4.3      && < 5,
         bytestring >= 0.9      && < 1,
-        Cabal      >= 1.22     && < 1.23,
+        Cabal      >= 1.22.2   && < 1.23,
         containers >= 0.1      && < 0.6,
-        filepath   >= 1.0      && < 1.4,
+        filepath   >= 1.0      && < 1.5,
         HTTP       >= 4000.2.5 && < 4000.3,
         mtl        >= 2.0      && < 3,
         pretty     >= 1        && < 1.2,
@@ -231,6 +231,7 @@
   other-modules:
     PackageTests.Exec.Check
     PackageTests.Freeze.Check
+    PackageTests.MultipleSource.Check
     PackageTests.PackageTester
   build-depends:
     Cabal,
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,4 +1,8 @@
 -*-change-log-*-
+1.22.2.0 Ryan Thomas <ryan@ryant.org> March 2015
+	* Don't pass '--{en,dis}able-profiling' to old setup exes.
+	* -Wall police
+	* Allow filepath 1.4
 
 1.21.x (current development version)
 	* New command: user-config (#2159).
diff --git a/tests/PackageTests/Exec/Check.hs b/tests/PackageTests/Exec/Check.hs
--- a/tests/PackageTests/Exec/Check.hs
+++ b/tests/PackageTests/Exec/Check.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module PackageTests.Exec.Check
        ( tests
        ) where
@@ -9,7 +10,9 @@
 import Test.Framework.Providers.HUnit (testCase)
 import Test.HUnit                     (assertBool)
 
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative ((<$>))
+#endif
 import Control.Monad (when)
 import Data.List (intercalate, isInfixOf)
 import System.FilePath ((</>))
diff --git a/tests/PackageTests/MultipleSource/Check.hs b/tests/PackageTests/MultipleSource/Check.hs
new file mode 100644
--- /dev/null
+++ b/tests/PackageTests/MultipleSource/Check.hs
@@ -0,0 +1,28 @@
+module PackageTests.MultipleSource.Check
+       ( tests
+       ) where
+
+
+import PackageTests.PackageTester
+
+import Test.Framework                 as TF (Test)
+import Test.Framework.Providers.HUnit (testCase)
+
+import Control.Monad    (void, when)
+import System.Directory (doesDirectoryExist)
+import System.FilePath  ((</>))
+
+dir :: FilePath
+dir = packageTestsDirectory </> "MultipleSource"
+
+tests :: TestsPaths -> [TF.Test]
+tests paths =
+    [ testCase "finds second source of multiple source" $ do
+          sandboxExists <- doesDirectoryExist $ dir </> ".cabal-sandbox"
+          when sandboxExists $
+            void $ cabal_sandbox paths dir ["delete"]
+          assertSandboxSucceeded =<< cabal_sandbox paths dir ["init"]
+          assertSandboxSucceeded =<< cabal_sandbox paths dir ["add-source", "p"]
+          assertSandboxSucceeded =<< cabal_sandbox paths dir ["add-source", "q"]
+          assertInstallSucceeded =<< cabal_install paths dir ["q"]
+    ]
diff --git a/tests/UnitTests/Distribution/Client/UserConfig.hs b/tests/UnitTests/Distribution/Client/UserConfig.hs
--- a/tests/UnitTests/Distribution/Client/UserConfig.hs
+++ b/tests/UnitTests/Distribution/Client/UserConfig.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 module UnitTests.Distribution.Client.UserConfig
     ( tests
     ) where
 
 import Control.Exception (bracket)
 import Data.List (sort, nub)
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
+#endif
 import System.Directory (getCurrentDirectory, removeDirectoryRecursive, createDirectoryIfMissing)
 import System.FilePath (takeDirectory)
 
