diff --git a/ghc.changes b/ghc.changes index a487145..7f321e7 100644 --- a/ghc.changes +++ b/ghc.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Sun Feb 7 00:33:26 UTC 2016 - mimi.vx@gmail.com + +- update haskeline to 0.7.2.2 +- add u_haskeline_update.patch +* canonicalize AMP instances to make the code more future proof +* Generalize constraints for InputT instances +* Bump upper bounds on base and transformers +* Make Haskeline `-Wtabs` clean + ------------------------------------------------------------------- Tue Jan 26 08:22:59 UTC 2016 - mimi.vx@gmail.com diff --git a/ghc.spec b/ghc.spec index ad889af..fbf58de 100644 --- a/ghc.spec +++ b/ghc.spec @@ -80,6 +80,8 @@ Patch20: ghc.git-b29f20.patch Patch21: u_terminfo_0402.patch # PATCH-FIX-UPSTREAM u_Cabal_update.patch mimi.vx@gmail.com -- update Cabal to 1.22.6.0 Patch22: u_Cabal_update.patch +# PATCH-FIX-UPSTREAM u_haskeline_update.patch mimi.vx@gmail.com -- update haskeline to 0.7.2.2 +Patch23: u_haskeline_update.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -137,7 +139,7 @@ To install all of GHC install package ghc. %define ghc_pkg_obsoletes ghc-bin-package-db-devel < 0.0.0.0-%{release} %ghc_lib_subpackage -x ghc %{ghc_version_override} %undefine ghc_pkg_obsoletes -%ghc_lib_subpackage haskeline 0.7.2.1 +%ghc_lib_subpackage haskeline 0.7.2.2 %ghc_lib_subpackage hoopl 3.10.0.2 %ghc_lib_subpackage hpc 0.6.0.2 %ghc_lib_subpackage pretty 1.1.2.0 @@ -175,6 +177,7 @@ except the ghc library, which is installed by the toplevel ghc metapackage. %patch20 -p1 %patch21 -p2 %patch22 -p2 +%patch23 -p2 %build # Patch 19 modifies build system diff --git a/u_haskeline_update.patch b/u_haskeline_update.patch new file mode 100644 index 0000000..c489e5d --- /dev/null +++ b/u_haskeline_update.patch @@ -0,0 +1,150 @@ +diff --git a/ghc-7.10.3.old/libraries/haskeline/Changelog b/ghc-7.10.3/libraries/haskeline/Changelog +index 5cb7cc5..e559185 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/Changelog ++++ b/ghc-7.10.3/libraries/haskeline/Changelog +@@ -1,3 +1,10 @@ ++Changed in version 0.7.2.2: ++ * Fix Linux to Windows cross-compile ++ * Canonicalize AMP instances to make the code more future proof ++ * Generalize constraints for InputT instances ++ * Bump upper bounds on base and transformers ++ * Make Haskeline `-Wtabs` clean ++ + Changed in version 0.7.2.1: + * Fix build on Windows. + +diff --git a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Command/Completion.hs b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Command/Completion.hs +index 97a887b..71a0f12 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Command/Completion.hs ++++ b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Command/Completion.hs +@@ -21,7 +21,7 @@ useCompletion im c = insertString r im + where r | isFinished c = replacement c ++ " " + | otherwise = replacement c + +-askIMCompletions :: CommandMonad m => ++askIMCompletions :: CommandMonad m => + Command m InsertMode (InsertMode, [Completion]) + askIMCompletions (IMode xs ys) = do + (rest, completions) <- lift $ runCompletion (withRev graphemesToString xs, +@@ -72,7 +72,7 @@ pagingCompletion :: MonadReader Layout m => Key -> Prefs + pagingCompletion k prefs completions = \im -> do + ls <- asks $ makeLines (map display completions) + let pageAction = do +- askFirst prefs (length completions) $ ++ askFirst prefs (length completions) $ + if completionPaging prefs + then printPage ls + else effect (PrintLines ls) +@@ -134,7 +134,7 @@ padWords :: Int -> [String] -> String + padWords _ [x] = x + padWords _ [] = "" + padWords len (x:xs) = x ++ replicate (len - glength x) ' ' +- ++ padWords len xs ++ ++ padWords len xs + where + -- kludge: compute the length in graphemes, not chars. + -- but don't use graphemes for the max length, since I'm not convinced +@@ -159,5 +159,3 @@ splitIntoGroups n xs = transpose $ unfoldr f xs + ceilDiv :: Integral a => a -> a -> a + ceilDiv m n | m `rem` n == 0 = m `div` n + | otherwise = m `div` n + 1 +- +- +diff --git a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Command.hs b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Command.hs +index 986fd42..1a0d915 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Command.hs ++++ b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Command.hs +@@ -66,11 +66,11 @@ instance Monad m => Functor (CmdM m) where + fmap = liftM + + instance Monad m => Applicative (CmdM m) where +- pure = return ++ pure = Result + (<*>) = ap + + instance Monad m => Monad (CmdM m) where +- return = Result ++ return = pure + + GetKey km >>= g = GetKey $ fmap (>>= g) km + DoEffect e f >>= g = DoEffect e (f >>= g) +diff --git a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Directory.hsc b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Directory.hsc +index b2deb22..9eb0952 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Directory.hsc ++++ b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Directory.hsc +@@ -19,7 +19,7 @@ import qualified System.Directory + #endif + + #include +-#include ++#include + + ##if defined(i386_HOST_ARCH) + ## define WINDOWS_CCONV stdcall +diff --git a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/InputT.hs b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/InputT.hs +index 383cf5f..c1ee55e 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/InputT.hs ++++ b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/InputT.hs +@@ -47,19 +47,12 @@ newtype InputT m a = InputT {unInputT :: + (ReaderT (IORef KillRing) + (ReaderT Prefs + (ReaderT (Settings m) m)))) a} +- deriving (Monad, MonadIO, MonadException) ++ deriving (Functor, Applicative, Monad, MonadIO, MonadException) + -- NOTE: we're explicitly *not* making InputT an instance of our + -- internal MonadState/MonadReader classes. Otherwise haddock + -- displays those instances to the user, and it makes it seem like + -- we implement the mtl versions of those classes. + +-instance Monad m => Functor (InputT m) where +- fmap = liftM +- +-instance Monad m => Applicative (InputT m) where +- pure = return +- (<*>) = ap +- + instance MonadTrans InputT where + lift = InputT . lift . lift . lift . lift . lift + +diff --git a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Monads.hs b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Monads.hs +index 6668e96..d5fc1bb 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/System/Console/Haskeline/Monads.hs ++++ b/ghc-7.10.3/libraries/haskeline/System/Console/Haskeline/Monads.hs +@@ -77,11 +77,11 @@ instance Monad m => Functor (StateT s m) where + fmap = liftM + + instance Monad m => Applicative (StateT s m) where +- pure = return ++ pure x = StateT $ \s -> return $ \f -> f x s + (<*>) = ap + + instance Monad m => Monad (StateT s m) where +- return x = StateT $ \s -> return $ \f -> f x s ++ return = pure + StateT f >>= g = StateT $ \s -> do + useX <- f s + useX $ \x s' -> getStateTFunc (g x) s' +diff --git a/ghc-7.10.3.old/libraries/haskeline/haskeline.cabal b/ghc-7.10.3/libraries/haskeline/haskeline.cabal +index b709ee3..7402b6d 100644 +--- a/ghc-7.10.3.old/libraries/haskeline/haskeline.cabal ++++ b/ghc-7.10.3/libraries/haskeline/haskeline.cabal +@@ -1,6 +1,6 @@ + Name: haskeline + Cabal-Version: >=1.10 +-Version: 0.7.2.1 ++Version: 0.7.2.2 + Category: User Interfaces + License: BSD3 + License-File: LICENSE +@@ -50,9 +50,9 @@ flag legacy-encoding + Default: False + + Library +- Build-depends: base >=4.3 && < 4.9, containers>=0.4 && < 0.6, ++ Build-depends: base >=4.3 && < 4.10, containers>=0.4 && < 0.6, + directory>=1.1 && < 1.3, bytestring>=0.9 && < 0.11, +- filepath >= 1.2 && < 1.5, transformers >= 0.2 && < 0.5 ++ filepath >= 1.2 && < 1.5, transformers >= 0.2 && < 0.6 + Default-Language: Haskell98 + Default-Extensions: + ForeignFunctionInterface, Rank2Types, FlexibleInstances,