summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/patches
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-04-02 15:25:51 +0200
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-04-02 15:25:51 +0200
commit8babfa7fa562a8b427c95f060d12712e4069ac34 (patch)
tree86112daa25d17b30831cf73de67ff27c7f68c005 /pkgs/development/haskell-modules/patches
parentd5eac5c07f86f378ffa31a2eca170cf52979c895 (diff)
downloadnixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar.gz
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar.bz2
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar.lz
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar.xz
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.tar.zst
nixpkgs-8babfa7fa562a8b427c95f060d12712e4069ac34.zip
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.
Diffstat (limited to 'pkgs/development/haskell-modules/patches')
-rw-r--r--pkgs/development/haskell-modules/patches/gitit-pandoc-2.12.patch65
1 files changed, 65 insertions, 0 deletions
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 00000000000..da8e27d2b31
--- /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