mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-29 18:33:00 +00:00
Merge pull request #165014 from ncfavier/lambdabot-patch
lambdabot: apply upstream patches for GHC 9.0.2 support
This commit is contained in:
commit
5d20cc6958
@ -2467,6 +2467,32 @@ self: super: {
|
||||
# https://github.com/kuribas/mfsolve/issues/8
|
||||
mfsolve = dontCheck super.mfsolve;
|
||||
|
||||
knob = appendPatch ./patches/knob-ghc9.patch super.knob;
|
||||
|
||||
# compatibility with random-fu 0.3 https://github.com/mokus0/misfortune/pull/5
|
||||
misfortune = appendPatch ./patches/misfortune-ghc9.patch (overrideCabal (drv: {
|
||||
revision = null;
|
||||
editedCabalFile = null;
|
||||
}) super.misfortune);
|
||||
|
||||
# GHC 9 support https://github.com/lambdabot/dice/pull/2
|
||||
dice = appendPatch (pkgs.fetchpatch {
|
||||
name = "dice-ghc9.patch";
|
||||
url = "https://github.com/lambdabot/dice/commit/80d6fd443cb17b21d91b725f994ece6e8274e0a0.patch";
|
||||
excludes = [ ".gitignore" ];
|
||||
sha256 = "sha256-MtS1n7v5D6MRWWzzTyKl3Lqd/NhD1bV+g80wnhZ3P/Y=";
|
||||
}) (overrideCabal (drv: {
|
||||
revision = null;
|
||||
editedCabalFile = null;
|
||||
}) super.dice);
|
||||
|
||||
# GHC 9 support https://github.com/lambdabot/lambdabot/pull/204
|
||||
lambdabot-core = appendPatch ./patches/lambdabot-core-ghc9.patch (overrideCabal (drv: {
|
||||
revision = null;
|
||||
editedCabalFile = null;
|
||||
}) super.lambdabot-core);
|
||||
lambdabot-novelty-plugins = appendPatch ./patches/lambdabot-novelty-plugins-ghc9.patch super.lambdabot-novelty-plugins;
|
||||
|
||||
# Ships a custom cabal-doctest Setup.hs in the release tarball, but the actual
|
||||
# test suite is commented out, so the required dependency is missing naturally.
|
||||
# We need to use a default Setup.hs instead. Current master doesn't exhibit
|
||||
@ -2543,7 +2569,7 @@ self: super: {
|
||||
# 2022-03-16: Bounds need to be loosened https://github.com/obsidiansystems/dependent-sum-aeson-orphans/issues/10
|
||||
dependent-sum-aeson-orphans = doJailbreak super.dependent-sum-aeson-orphans;
|
||||
|
||||
# 2022-04-16: package qualified import issue: https://github.com/ghcjs/ghcjs-dom/issues/101
|
||||
# 2022-03-16: package qualified import issue: https://github.com/ghcjs/ghcjs-dom/issues/101
|
||||
ghcjs-dom = assert super.ghcjs-dom.version == "0.9.5.0"; overrideCabal (old: {
|
||||
postPatch = ''
|
||||
sed -i 's/import "jsaddle-dom" GHCJS.DOM.Document/import "ghcjs-dom-jsaddle" GHCJS.DOM.Document/' src/GHCJS/DOM/Document.hs
|
||||
|
@ -47,8 +47,6 @@ self: super: {
|
||||
Cabal = self.Cabal_3_6_3_0;
|
||||
});
|
||||
|
||||
knob = appendPatch ./patches/knob-ghc9.patch super.knob;
|
||||
|
||||
# Jailbreaks & Version Updates
|
||||
|
||||
# This `doJailbreak` can be removed once the following PR is released to Hackage:
|
||||
|
@ -0,0 +1,95 @@
|
||||
diff --git a/lambdabot-core.cabal b/lambdabot-core.cabal
|
||||
index 861a28b..87175a3 100644
|
||||
--- a/lambdabot-core.cabal
|
||||
+++ b/lambdabot-core.cabal
|
||||
@@ -19,7 +19,7 @@ homepage: https://wiki.haskell.org/Lambdabot
|
||||
|
||||
build-type: Simple
|
||||
cabal-version: >= 1.10
|
||||
-tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4
|
||||
+tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4, GHC == 9.0.2
|
||||
|
||||
extra-source-files: AUTHORS.md
|
||||
COMMENTARY.md
|
||||
@@ -89,9 +89,8 @@ library
|
||||
network-bsd >= 2.7 && < 2.9,
|
||||
parsec >= 3,
|
||||
prim-uniq >= 0.2 && < 0.4,
|
||||
- random >= 1,
|
||||
- random-fu >= 0.2.6.2,
|
||||
- random-source >= 0.3,
|
||||
+ random >= 1.2,
|
||||
+ random-fu >= 0.3.0.0,
|
||||
regex-tdfa >= 1.1 && < 1.4,
|
||||
SafeSemaphore >= 0.9,
|
||||
split >= 0.2,
|
||||
diff --git a/src/Lambdabot/Bot.hs b/src/Lambdabot/Bot.hs
|
||||
index 1b0de2e..833fb4c 100644
|
||||
--- a/src/Lambdabot/Bot.hs
|
||||
+++ b/src/Lambdabot/Bot.hs
|
||||
@@ -1,6 +1,5 @@
|
||||
{-# LANGUAGE GADTs #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
-{-# LANGUAGE TemplateHaskell #-}
|
||||
-- | The guts of lambdabot.
|
||||
--
|
||||
-- The LB/Lambdabot monad
|
||||
@@ -37,7 +36,6 @@ import Control.Monad.Error
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State
|
||||
import qualified Data.Map as M
|
||||
-import Data.Random.Source
|
||||
import qualified Data.Set as S
|
||||
|
||||
------------------------------------------------------------------------
|
||||
@@ -136,17 +134,3 @@ ircPrivmsg who msg = do
|
||||
ircPrivmsg' :: Nick -> String -> LB ()
|
||||
ircPrivmsg' who "" = ircPrivmsg' who " "
|
||||
ircPrivmsg' who msg = send $ privmsg who msg
|
||||
-
|
||||
-------------------------------------------------------------------------
|
||||
-
|
||||
-monadRandom [d|
|
||||
-
|
||||
- instance MonadRandom LB where
|
||||
- getRandomWord8 = liftIO getRandomWord8
|
||||
- getRandomWord16 = liftIO getRandomWord16
|
||||
- getRandomWord32 = liftIO getRandomWord32
|
||||
- getRandomWord64 = liftIO getRandomWord64
|
||||
- getRandomDouble = liftIO getRandomDouble
|
||||
- getRandomNByteInteger n = liftIO (getRandomNByteInteger n)
|
||||
-
|
||||
- |]
|
||||
diff --git a/src/Lambdabot/Util.hs b/src/Lambdabot/Util.hs
|
||||
index effdf71..259699b 100644
|
||||
--- a/src/Lambdabot/Util.hs
|
||||
+++ b/src/Lambdabot/Util.hs
|
||||
@@ -23,14 +23,15 @@ module Lambdabot.Util (
|
||||
randomSuccessMsg
|
||||
) where
|
||||
|
||||
+import Control.Concurrent.Lifted
|
||||
import Control.Monad.Trans
|
||||
+import Control.Monad.Trans.Control
|
||||
import Data.Char
|
||||
import Data.List
|
||||
import Data.Random
|
||||
-import Control.Concurrent.Lifted
|
||||
-import Control.Monad.Trans.Control
|
||||
import Lambdabot.Config
|
||||
import Lambdabot.Config.Core
|
||||
+import System.Random.Stateful (newIOGenM, newStdGen)
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@@ -63,7 +64,9 @@ listToStr conj (item:items) =
|
||||
|
||||
-- | Pick a random element of the list.
|
||||
random :: MonadIO m => [a] -> m a
|
||||
-random = io . sample . randomElement
|
||||
+random l = do
|
||||
+ g <- newIOGenM =<< newStdGen
|
||||
+ sampleFrom g (randomElement l)
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
@ -0,0 +1,58 @@
|
||||
diff --git a/lambdabot-novelty-plugins.cabal b/lambdabot-novelty-plugins.cabal
|
||||
index 69c8447..50a35f6 100644
|
||||
--- a/lambdabot-novelty-plugins.cabal
|
||||
+++ b/lambdabot-novelty-plugins.cabal
|
||||
@@ -36,7 +36,7 @@ homepage: https://wiki.haskell.org/Lambdabot
|
||||
|
||||
build-type: Simple
|
||||
cabal-version: >= 1.10
|
||||
-tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4
|
||||
+tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4, GHC == 9.0.2
|
||||
|
||||
source-repository head
|
||||
type: git
|
||||
@@ -71,7 +71,8 @@ library
|
||||
lambdabot-core >= 5.3 && < 5.4,
|
||||
misfortune >= 0.1,
|
||||
process >= 1.1,
|
||||
- random-fu >= 0.2.6.2,
|
||||
+ random >= 1.2,
|
||||
+ random-fu >= 0.3.0.0,
|
||||
regex-tdfa >= 1.1,
|
||||
|
||||
-- runtime dependencies
|
||||
diff --git a/src/Lambdabot/Plugin/Novelty/Numberwang.hs b/src/Lambdabot/Plugin/Novelty/Numberwang.hs
|
||||
index ae41eb4..8321a14 100644
|
||||
--- a/src/Lambdabot/Plugin/Novelty/Numberwang.hs
|
||||
+++ b/src/Lambdabot/Plugin/Novelty/Numberwang.hs
|
||||
@@ -7,7 +7,9 @@ import Control.Monad
|
||||
import Data.Random
|
||||
import Data.Random.Distribution.Poisson
|
||||
import Lambdabot.Plugin
|
||||
+import Lambdabot.Util
|
||||
import Numeric
|
||||
+import System.Random.Stateful (newIOGenM, newStdGen)
|
||||
|
||||
|
||||
data NumberwangState = State
|
||||
@@ -23,7 +25,9 @@ conDist = poisson (32 :: Double)
|
||||
|
||||
numberwangPlugin :: Module NumberwangState
|
||||
numberwangPlugin = newModule
|
||||
- { moduleDefState = sample (State <$> cmdDist <*> conDist)
|
||||
+ { moduleDefState = do
|
||||
+ g <- newIOGenM =<< newStdGen
|
||||
+ sampleFrom g (State <$> cmdDist <*> conDist)
|
||||
, moduleCmds = return
|
||||
[ (command "numberwang")
|
||||
{ help = say "@numberwang <number>: Determines if it is Numberwang."
|
||||
@@ -61,7 +65,8 @@ checkNumberwang :: (MonadLBState m, LBState m ~ NumberwangState) =>
|
||||
checkNumberwang cmd l = withState cmd $ \ n setN nDist -> do
|
||||
if n <= l
|
||||
then do
|
||||
- setN =<< lb (sample nDist)
|
||||
+ g <- newIOGenM =<< newStdGen
|
||||
+ setN =<< sampleFrom g nDist
|
||||
return True
|
||||
else do
|
||||
setN (n - l)
|
@ -0,0 +1,70 @@
|
||||
diff --git a/misfortune.cabal b/misfortune.cabal
|
||||
index f5d0dd3..faa5794 100644
|
||||
--- a/misfortune.cabal
|
||||
+++ b/misfortune.cabal
|
||||
@@ -113,7 +113,8 @@ Library
|
||||
directory,
|
||||
filepath,
|
||||
knob,
|
||||
- random-fu >= 0.2.2,
|
||||
+ random,
|
||||
+ random-fu >= 0.3,
|
||||
semigroups,
|
||||
text,
|
||||
utf8-string,
|
||||
diff --git a/src/Data/Fortune.hs b/src/Data/Fortune.hs
|
||||
index 16d221e..ffbc970 100644
|
||||
--- a/src/Data/Fortune.hs
|
||||
+++ b/src/Data/Fortune.hs
|
||||
@@ -64,6 +64,7 @@ import Paths_misfortune
|
||||
import System.Directory
|
||||
import System.Environment
|
||||
import System.FilePath
|
||||
+import System.Random.Stateful (newIOGenM, newStdGen)
|
||||
|
||||
-- |The number of fortune strings in the index
|
||||
numFortunes :: S.FortuneStats -> Int
|
||||
@@ -233,9 +234,10 @@ randomFortune paths = withFortuneFiles '%' False paths $ \fs -> do
|
||||
-- random fortune from that file (unformly).
|
||||
randomFortuneFromRandomFile :: RVar FortuneFile -> IO String
|
||||
randomFortuneFromRandomFile file = do
|
||||
- f <- sample file
|
||||
+ gen <- newStdGen >>= newIOGenM
|
||||
+ f <- sampleFrom gen file
|
||||
n <- getNumFortunes f
|
||||
- i <- sample (uniform 0 (n-1))
|
||||
+ i <- sampleFrom gen (uniform 0 (n-1))
|
||||
T.unpack <$> getFortune f i
|
||||
|
||||
-- |Given a list of 'FortuneFile's, compute a distrubution over them weighted by the number
|
||||
diff --git a/src/Fortune.hs b/src/Fortune.hs
|
||||
index 5a27578..d6ffb74 100644
|
||||
--- a/src/Fortune.hs
|
||||
+++ b/src/Fortune.hs
|
||||
@@ -21,6 +21,7 @@ import System.Environment
|
||||
import System.Exit
|
||||
import System.FilePath
|
||||
import System.IO
|
||||
+import System.Random.Stateful (newIOGenM, newStdGen)
|
||||
import Text.Printf
|
||||
import Text.Regex.Base
|
||||
import Text.Regex.PCRE
|
||||
@@ -200,6 +201,7 @@ main = do
|
||||
fortunes <- filterM (filterFile args) (fortuneFiles args)
|
||||
|
||||
dist <- getDist args fortunes
|
||||
+ gen <- newStdGen >>= newIOGenM
|
||||
|
||||
when (numEvents dist == 0) $ do
|
||||
hPutStrLn stderr "No fortunes matched the filter criteria"
|
||||
@@ -225,8 +227,8 @@ main = do
|
||||
, let pctStr = printf "(%.2f%%)" (100 * weight / totalWeight dist) :: String
|
||||
]
|
||||
else do
|
||||
- (file, fortuneDist) <- sample dist
|
||||
- fortune <- sample fortuneDist
|
||||
+ (file, fortuneDist) <- sampleFrom gen dist
|
||||
+ fortune <- sampleFrom gen fortuneDist
|
||||
putStrLn . T.unpack =<< getFortune file fortune
|
||||
|
||||
getDist :: Args -> [FortuneFile] -> IO (Categorical Float (FortuneFile, Categorical Float Int))
|
Loading…
Reference in New Issue
Block a user