From 8babfa7fa562a8b427c95f060d12712e4069ac34 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Fri, 2 Apr 2021 15:25:51 +0200 Subject: haskellPackages.gitit: unbreak pandoc 2.12 changed and removed a few exports gitit used. I procured a patch which fixes those without any refactoring by vendoring in the removed function from pandoc which is no problem as they are both available under the GPL 2.0. --- .../patches/gitit-pandoc-2.12.patch | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 pkgs/development/haskell-modules/patches/gitit-pandoc-2.12.patch (limited to 'pkgs/development/haskell-modules/patches') diff --git a/pkgs/development/haskell-modules/patches/gitit-pandoc-2.12.patch b/pkgs/development/haskell-modules/patches/gitit-pandoc-2.12.patch new file mode 100644 index 0000000000000..da8e27d2b31d7 --- /dev/null +++ b/pkgs/development/haskell-modules/patches/gitit-pandoc-2.12.patch @@ -0,0 +1,65 @@ +commit a03d3b043458f45d29ba32068a77c0d3b8a4223f +Author: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> +Date: Fri Apr 2 15:14:02 2021 +0200 + + Allow compilation with pandoc 2.12 and 2.13 + + pandoc 2.13 introduced the following breakages for gitit: + + * UTF8.readFile now returns a Text which is actually ideal for gitit. + If pandoc is new enough we just make readFileUTF8 an alias for + UTF8.readFile. + + * Text.Pandoc.Shared no longer exports substitute. In order to be + conservative I've chosen to just copy the substitute function from + pandoc 2.11.4. I need this patch kind of urgently so I didn't want to + make any changes or refactors independently from upstream if + avoidable. However, I'd be happy to rebase this PR branch to adopt a + different solution to just copying the function. + +diff --git a/src/Network/Gitit/Authentication.hs b/src/Network/Gitit/Authentication.hs +index 4c240e7..c0f92fd 100644 +--- a/src/Network/Gitit/Authentication.hs ++++ b/src/Network/Gitit/Authentication.hs +@@ -44,7 +44,7 @@ import System.Exit + import System.Log.Logger (logM, Priority(..)) + import Data.Char (isAlphaNum, isAlpha) + import qualified Data.Map as M +-import Text.Pandoc.Shared (substitute) ++import Data.List (stripPrefix) + import Data.Maybe (isJust, fromJust, isNothing, fromMaybe) + import Network.URL (exportURL, add_param, importURL) + import Network.BSD (getHostName) +@@ -54,6 +54,16 @@ import Codec.Binary.UTF8.String (encodeString) + import Data.ByteString.UTF8 (toString) + import Network.Gitit.Rpxnow as R + ++-- | Replace each occurrence of one sublist in a list with another. ++-- Vendored in from pandoc 2.11.4 as 2.12 removed this function. ++substitute :: (Eq a) => [a] -> [a] -> [a] -> [a] ++substitute _ _ [] = [] ++substitute [] _ xs = xs ++substitute target replacement lst@(x:xs) = ++ case stripPrefix target lst of ++ Just lst' -> replacement ++ substitute target replacement lst' ++ Nothing -> x : substitute target replacement xs ++ + data ValidationType = Register + | ResetPassword + deriving (Show,Read) +diff --git a/src/Network/Gitit/Util.hs b/src/Network/Gitit/Util.hs +index c5e9fe5..067130a 100644 +--- a/src/Network/Gitit/Util.hs ++++ b/src/Network/Gitit/Util.hs +@@ -45,7 +45,11 @@ import Network.URL (encString) + + -- | Read file as UTF-8 string. Encode filename as UTF-8. + readFileUTF8 :: FilePath -> IO Text ++#if MIN_VERSION_pandoc(2,12,0) ++readFileUTF8 = UTF8.readFile ++#else + readFileUTF8 = fmap T.pack . UTF8.readFile ++#endif + + -- | Perform a function a directory and return to working directory. + inDir :: FilePath -> IO a -> IO a -- cgit 1.4.1