[Git][haskell-team/DHG_packages][master] pandoc: Upgrading from 3.1.3 to 3.1.11.1
Scott Talbert (@swt2c)
gitlab at salsa.debian.org
Tue Oct 8 22:33:44 BST 2024
Scott Talbert pushed to branch master at Debian Haskell Group / DHG_packages
Commits:
1f1ce800 by Scott Talbert at 2024-10-08T17:32:23-04:00
pandoc: Upgrading from 3.1.3 to 3.1.11.1
- - - - -
14 changed files:
- p/haskell-pandoc/debian/changelog
- p/haskell-pandoc/debian/control
- − p/haskell-pandoc/debian/patches/020230620~5e381e3.patch
- − p/haskell-pandoc/debian/patches/020230623.1~54561e9.patch
- − p/haskell-pandoc/debian/patches/020230623.2~df4f13b.patch
- − p/haskell-pandoc/debian/patches/020230623.3~fe62da6.patch
- − p/haskell-pandoc/debian/patches/020230623.4~5246f02.patch
- − p/haskell-pandoc/debian/patches/020230720~eddedbf.patch
- p/haskell-pandoc/debian/patches/2001_templates_avoid_privacy_breach.patch
- − p/haskell-pandoc/debian/patches/8764027cbba74762fd86b2c6a370abe7f580129a.patch
- − p/haskell-pandoc/debian/patches/8b523749aebb67f709fe7348b412f3e5e629ceb4.patch
- − p/haskell-pandoc/debian/patches/f9153e86bbb0b0b5a6722dded757b43c59f3e057.patch
- p/haskell-pandoc/debian/patches/series
- p/haskell-pandoc/debian/patches/undo-xml-light-internal-library
Changes:
=====================================
p/haskell-pandoc/debian/changelog
=====================================
@@ -1,8 +1,12 @@
-haskell-pandoc (3.1.3-4) UNRELEASED; urgency=medium
+haskell-pandoc (3.1.11.1-1) unstable; urgency=medium
+ [ Ilias Tsitsimpis ]
* Declare compliance with Debian policy 4.7.0
- -- Ilias Tsitsimpis <iliastsi at debian.org> Wed, 11 Sep 2024 15:18:00 +0300
+ [ Scott Talbert ]
+ * New upstream release (Closes: #1053777, #1062045)
+
+ -- Scott Talbert <swt at techie.net> Tue, 08 Oct 2024 16:40:26 -0400
haskell-pandoc (3.1.3-3) unstable; urgency=medium
=====================================
p/haskell-pandoc/debian/control
=====================================
@@ -7,7 +7,7 @@ Rules-Requires-Root: no
Build-Depends: debhelper (>= 10),
haskell-devscripts-minimal | haskell-devscripts (>= 0.13),
cdbs,
- ghc,
+ ghc (>= 9.6),
ghc-prof,
libghc-glob-dev (>= 0.7),
libghc-glob-dev (<< 0.11),
@@ -19,7 +19,7 @@ Build-Depends: debhelper (>= 10),
libghc-sha-dev (<< 1.7),
libghc-sha-prof,
libghc-aeson-dev (>= 2.0.1.0),
- libghc-aeson-dev (<< 2.2),
+ libghc-aeson-dev (<< 2.3),
libghc-aeson-prof,
libghc-aeson-pretty-dev (>= 0.8.9),
libghc-aeson-pretty-dev (<< 0.9),
@@ -42,22 +42,24 @@ Build-Depends: debhelper (>= 10),
libghc-citeproc-dev (>= 0.8.1),
libghc-citeproc-dev (<< 0.9),
libghc-citeproc-prof,
- libghc-commonmark-dev (>= 0.2.2),
+ libghc-commonmark-dev (>= 0.2.4.1),
libghc-commonmark-dev (<< 0.3),
libghc-commonmark-prof,
- libghc-commonmark-extensions-dev (>= 0.2.3.4),
+ libghc-commonmark-extensions-dev (>= 0.2.5),
libghc-commonmark-extensions-dev (<< 0.3),
libghc-commonmark-extensions-prof,
- libghc-commonmark-pandoc-dev (>= 0.2.1.3),
+ libghc-commonmark-pandoc-dev (>= 0.2.2),
libghc-commonmark-pandoc-dev (<< 0.3),
libghc-commonmark-pandoc-prof,
- libghc-connection-dev (>= 0.3.1),
- libghc-connection-prof,
+ libghc-crypton-connection-dev (>= 0.3.1),
+ libghc-crypton-connection-dev (<< 0.4),
+ libghc-crypton-connection-prof,
libghc-data-default-dev (>= 0.4),
libghc-data-default-dev (<< 0.8),
libghc-data-default-prof,
libghc-diff-dev (>= 0.2),
- libghc-diff-dev (<< 0.5),
+ libghc-diff-dev (>= 0.2),
+ libghc-diff-dev (<< 0.6),
libghc-diff-prof,
libghc-doclayout-dev (>= 0.4.0.1),
libghc-doclayout-dev (<< 0.5),
@@ -96,11 +98,12 @@ Build-Depends: debhelper (>= 10),
libghc-mime-types-dev (<< 0.2),
libghc-mime-types-prof,
libghc-network-dev (>= 2.6),
+ libghc-network-dev (<< 3.2),
libghc-network-prof,
libghc-network-uri-dev (>= 2.6),
libghc-network-uri-dev (<< 2.8),
libghc-network-uri-prof,
- libghc-pandoc-types-dev (>= 1.23),
+ libghc-pandoc-types-dev (>= 1.23.1),
libghc-pandoc-types-dev (<< 1.24),
libghc-pandoc-types-prof,
libghc-pretty-show-dev (>= 1.10),
@@ -115,11 +118,11 @@ Build-Depends: debhelper (>= 10),
libghc-scientific-dev (>= 0.3),
libghc-scientific-dev (<< 0.4),
libghc-scientific-prof,
- libghc-skylighting-dev (>= 0.13.2.1),
- libghc-skylighting-dev (<< 0.14),
+ libghc-skylighting-dev (>= 0.14.1),
+ libghc-skylighting-dev (<< 0.15),
libghc-skylighting-prof,
- libghc-skylighting-core-dev (>= 0.13.2.1),
- libghc-skylighting-core-dev (<< 0.14),
+ libghc-skylighting-core-dev (>= 0.14.1),
+ libghc-skylighting-core-dev (<< 0.15),
libghc-skylighting-core-prof,
libghc-split-dev (>= 0.2),
libghc-split-dev (<< 0.3),
@@ -131,7 +134,7 @@ Build-Depends: debhelper (>= 10),
libghc-tagsoup-dev (<< 0.15),
libghc-tagsoup-prof,
libghc-tasty-dev (>= 0.11),
- libghc-tasty-dev (<< 1.5),
+ libghc-tasty-dev (<< 1.6),
libghc-tasty-prof,
libghc-tasty-golden-dev (>= 2.3),
libghc-tasty-golden-dev (<< 2.4),
@@ -145,14 +148,14 @@ Build-Depends: debhelper (>= 10),
libghc-temporary-dev (>= 1.1),
libghc-temporary-dev (<< 1.4),
libghc-temporary-prof,
- libghc-texmath-dev (>= 0.12.8),
+ libghc-texmath-dev (>= 0.12.8.6),
libghc-texmath-dev (<< 0.13),
libghc-texmath-prof,
libghc-text-conversions-dev (>= 0.3),
libghc-text-conversions-dev (<< 0.4),
libghc-text-conversions-prof,
- libghc-typst-dev (>= 0.1),
- libghc-typst-dev (<< 0.2),
+ libghc-typst-dev (>= 0.5),
+ libghc-typst-dev (<< 0.5.1),
libghc-typst-prof,
libghc-unicode-collation-dev (>= 0.1.1),
libghc-unicode-collation-dev (<< 0.2),
@@ -190,7 +193,7 @@ Build-Depends-Indep: ghc-doc,
libghc-commonmark-doc,
libghc-commonmark-extensions-doc,
libghc-commonmark-pandoc-doc,
- libghc-connection-doc,
+ libghc-crypton-connection-doc,
libghc-data-default-doc,
libghc-diff-doc,
libghc-doclayout-doc,
=====================================
p/haskell-pandoc/debian/patches/020230620~5e381e3.patch deleted
=====================================
@@ -1,120 +0,0 @@
-Description: fix a security vulnerability in MediaBag and T.P.Class.IO.writeMedia
- This vulnerability, discovered by Entroy C,
- allows users to write arbitrary files to any location
- by feeding pandoc a specially crafted URL in an image element.
- The vulnerability is serious
- for anyone using pandoc to process untrusted input.
- The vulnerability does not affect pandoc
- when run with the `--sandbox` flag.
-Origin: upstream, https://github.com/jgm/pandoc/commit/5e381e3
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-35936
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/src/Text/Pandoc/Class/IO.hs
-+++ b/src/Text/Pandoc/Class/IO.hs
-@@ -50,7 +50,7 @@
- import Network.HTTP.Client.TLS (mkManagerSettings)
- import Network.HTTP.Types.Header ( hContentType )
- import Network.Socket (withSocketsDo)
--import Network.URI (unEscapeString)
-+import Network.URI (URI(..), parseURI)
- import System.Directory (createDirectoryIfMissing)
- import System.Environment (getEnv)
- import System.FilePath ((</>), takeDirectory, normalise)
-@@ -122,11 +122,11 @@
-
- openURL :: (PandocMonad m, MonadIO m) => Text -> m (B.ByteString, Maybe MimeType)
- openURL u
-- | Just u'' <- T.stripPrefix "data:" u = do
-- let mime = T.takeWhile (/=',') u''
-- let contents = UTF8.fromString $
-- unEscapeString $ T.unpack $ T.drop 1 $ T.dropWhile (/=',') u''
-- return (decodeBase64Lenient contents, Just mime)
-+ | Just (URI{ uriScheme = "data:",
-+ uriPath = upath }) <- parseURI (T.unpack u) = do
-+ let (mime, rest) = break (== '.') upath
-+ let contents = UTF8.fromString $ drop 1 rest
-+ return (decodeBase64Lenient contents, Just (T.pack mime))
- | otherwise = do
- let toReqHeader (n, v) = (CI.mk (UTF8.fromText n), UTF8.fromText v)
- customHeaders <- map toReqHeader <$> getsCommonState stRequestHeaders
-@@ -224,7 +224,7 @@
- -> m ()
- writeMedia dir (fp, _mt, bs) = do
- -- we normalize to get proper path separators for the platform
-- let fullpath = normalise $ dir </> unEscapeString fp
-+ let fullpath = normalise $ dir </> fp
- liftIOError (createDirectoryIfMissing True) (takeDirectory fullpath)
- logIOError $ BL.writeFile fullpath bs
-
---- a/src/Text/Pandoc/MediaBag.hs
-+++ b/src/Text/Pandoc/MediaBag.hs
-@@ -28,6 +28,7 @@
- import qualified Data.Map as M
- import Data.Maybe (fromMaybe, isNothing)
- import Data.Typeable (Typeable)
-+import Network.URI (unEscapeString)
- import System.FilePath
- import qualified System.FilePath.Posix as Posix
- import qualified System.FilePath.Windows as Windows
-@@ -35,7 +36,7 @@
- import Data.Text (Text)
- import qualified Data.Text as T
- import Data.Digest.Pure.SHA (sha1, showDigest)
--import Network.URI (URI (..), parseURI)
-+import Network.URI (URI (..), parseURI, isURI)
-
- data MediaItem =
- MediaItem
-@@ -54,9 +55,12 @@
- instance Show MediaBag where
- show bag = "MediaBag " ++ show (mediaDirectory bag)
-
---- | We represent paths with /, in normalized form.
-+-- | We represent paths with /, in normalized form. Percent-encoding
-+-- is resolved.
- canonicalize :: FilePath -> Text
--canonicalize = T.replace "\\" "/" . T.pack . normalise
-+canonicalize fp
-+ | isURI fp = T.pack fp
-+ | otherwise = T.replace "\\" "/" . T.pack . normalise . unEscapeString $ fp
-
- -- | Delete a media item from a 'MediaBag', or do nothing if no item corresponds
- -- to the given path.
-@@ -79,23 +83,23 @@
- , mediaContents = contents
- , mediaMimeType = mt }
- fp' = canonicalize fp
-+ fp'' = T.unpack fp'
- uri = parseURI fp
-- newpath = if Posix.isRelative fp
-- && Windows.isRelative fp
-+ newpath = if Posix.isRelative fp''
-+ && Windows.isRelative fp''
- && isNothing uri
-- && ".." `notElem` splitDirectories fp
-- then T.unpack fp'
-+ && not (".." `T.isInfixOf` fp')
-+ then fp''
- else showDigest (sha1 contents) <> "." <> ext
-- fallback = case takeExtension fp of
-- ".gz" -> getMimeTypeDef $ dropExtension fp
-- _ -> getMimeTypeDef fp
-+ fallback = case takeExtension fp'' of
-+ ".gz" -> getMimeTypeDef $ dropExtension fp''
-+ _ -> getMimeTypeDef fp''
- mt = fromMaybe fallback mbMime
-- path = maybe fp uriPath uri
-+ path = maybe fp'' (unEscapeString . uriPath) uri
- ext = case takeExtension path of
- '.':e -> e
- _ -> maybe "" T.unpack $ extensionFromMimeType mt
-
--
- -- | Lookup a media item in a 'MediaBag', returning mime type and contents.
- lookupMedia :: FilePath
- -> MediaBag
=====================================
p/haskell-pandoc/debian/patches/020230623.1~54561e9.patch deleted
=====================================
@@ -1,24 +0,0 @@
-Description: fix bug in git commit 5e381e3
- In the new code a comma mysteriously turned into a period.
- This would have prevented proper separation
- of the mime type and content in data uris.
- Thanks to @hseg for catching this.
-Origin: upstream, https://github.com/jgm/pandoc/commit/54561e9
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-35936
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/src/Text/Pandoc/Class/IO.hs
-+++ b/src/Text/Pandoc/Class/IO.hs
-@@ -124,7 +124,7 @@
- openURL u
- | Just (URI{ uriScheme = "data:",
- uriPath = upath }) <- parseURI (T.unpack u) = do
-- let (mime, rest) = break (== '.') upath
-+ let (mime, rest) = break (== ',') upath
- let contents = UTF8.fromString $ drop 1 rest
- return (decodeBase64Lenient contents, Just (T.pack mime))
- | otherwise = do
=====================================
p/haskell-pandoc/debian/patches/020230623.2~df4f13b.patch deleted
=====================================
@@ -1,86 +0,0 @@
-Description: more fixes to git commit 5e381e3
- These changes recognize that parseURI does not unescape the path.
- .
- Another change is that the canonical form
- of the path used as the MediaBag key
- retains percent-encoding, if present;
- we only unescape the string when writing to a file.
- .
- Some tests are needed before the issue can be closed.
-Origin: upstream, https://github.com/jgm/pandoc/commit/df4f13b
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/issues/8918
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-35936
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/src/Text/Pandoc/Class/IO.hs
-+++ b/src/Text/Pandoc/Class/IO.hs
-@@ -50,7 +50,7 @@
- import Network.HTTP.Client.TLS (mkManagerSettings)
- import Network.HTTP.Types.Header ( hContentType )
- import Network.Socket (withSocketsDo)
--import Network.URI (URI(..), parseURI)
-+import Network.URI (URI(..), parseURI, unEscapeString)
- import System.Directory (createDirectoryIfMissing)
- import System.Environment (getEnv)
- import System.FilePath ((</>), takeDirectory, normalise)
-@@ -124,7 +124,7 @@
- openURL u
- | Just (URI{ uriScheme = "data:",
- uriPath = upath }) <- parseURI (T.unpack u) = do
-- let (mime, rest) = break (== ',') upath
-+ let (mime, rest) = break (== ',') $ unEscapeString upath
- let contents = UTF8.fromString $ drop 1 rest
- return (decodeBase64Lenient contents, Just (T.pack mime))
- | otherwise = do
-@@ -224,7 +224,7 @@
- -> m ()
- writeMedia dir (fp, _mt, bs) = do
- -- we normalize to get proper path separators for the platform
-- let fullpath = normalise $ dir </> fp
-+ let fullpath = normalise $ dir </> unEscapeString fp
- liftIOError (createDirectoryIfMissing True) (takeDirectory fullpath)
- logIOError $ BL.writeFile fullpath bs
-
---- a/src/Text/Pandoc/MediaBag.hs
-+++ b/src/Text/Pandoc/MediaBag.hs
-@@ -37,6 +37,7 @@
- import qualified Data.Text as T
- import Data.Digest.Pure.SHA (sha1, showDigest)
- import Network.URI (URI (..), parseURI, isURI)
-+import Data.List (isInfixOf)
-
- data MediaItem =
- MediaItem
-@@ -56,11 +57,11 @@
- show bag = "MediaBag " ++ show (mediaDirectory bag)
-
- -- | We represent paths with /, in normalized form. Percent-encoding
---- is resolved.
-+-- is not resolved.
- canonicalize :: FilePath -> Text
- canonicalize fp
- | isURI fp = T.pack fp
-- | otherwise = T.replace "\\" "/" . T.pack . normalise . unEscapeString $ fp
-+ | otherwise = T.replace "\\" "/" . T.pack . normalise $ fp
-
- -- | Delete a media item from a 'MediaBag', or do nothing if no item corresponds
- -- to the given path.
-@@ -83,12 +84,12 @@
- , mediaContents = contents
- , mediaMimeType = mt }
- fp' = canonicalize fp
-- fp'' = T.unpack fp'
-+ fp'' = unEscapeString $ T.unpack fp'
- uri = parseURI fp
- newpath = if Posix.isRelative fp''
- && Windows.isRelative fp''
- && isNothing uri
-- && not (".." `T.isInfixOf` fp')
-+ && not (".." `isInfixOf` fp'')
- then fp''
- else showDigest (sha1 contents) <> "." <> ext
- fallback = case takeExtension fp'' of
=====================================
p/haskell-pandoc/debian/patches/020230623.3~fe62da6.patch deleted
=====================================
@@ -1,87 +0,0 @@
-Description: add tests for fillMediaBag/extractMedia
-Origin: upstream, https://github.com/jgm/pandoc/commit/fe62da6
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-35936
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/pandoc.cabal
-+++ b/pandoc.cabal
-@@ -759,6 +759,7 @@ test-suite test-pandoc
- tasty-hunit >= 0.9 && < 0.11,
- tasty-quickcheck >= 0.8 && < 0.11,
- text >= 1.1.1.0 && < 2.1,
-+ temporary >= 1.1 && < 1.4,
- time >= 1.5 && < 1.14,
- xml >= 1.3.12 && < 1.4,
- zip-archive >= 0.4.3 && < 0.5
-@@ -766,6 +767,7 @@ test-suite test-pandoc
- Tests.Command
- Tests.Helpers
- Tests.Shared
-+ Tests.MediaBag
- Tests.Readers.LaTeX
- Tests.Readers.HTML
- Tests.Readers.JATS
---- /dev/null
-+++ b/test/Tests/MediaBag.hs
-@@ -0,0 +1,39 @@
-+{-# LANGUAGE OverloadedStrings #-}
-+module Tests.MediaBag (tests) where
-+
-+import Test.Tasty
-+import Test.Tasty.HUnit
-+-- import Tests.Helpers
-+import Text.Pandoc.Class (extractMedia, fillMediaBag, runIOorExplode)
-+import System.IO.Temp (withTempDirectory)
-+import System.FilePath
-+import Text.Pandoc.Builder as B
-+import System.Directory (doesFileExist, copyFile, setCurrentDirectory, getCurrentDirectory)
-+
-+tests :: [TestTree]
-+tests = [
-+ testCase "test fillMediaBag & extractMedia" $
-+ withTempDirectory "." "extractMediaTest" $ \tmpdir -> do
-+ olddir <- getCurrentDirectory
-+ setCurrentDirectory tmpdir
-+ copyFile "../../test/lalune.jpg" "moon.jpg"
-+ let d = B.doc $
-+ B.para (B.image "../../test/lalune.jpg" "" mempty) <>
-+ B.para (B.image "moon.jpg" "" mempty) <>
-+ B.para (B.image "data://image/png;base64,cHJpbnQgImhlbGxvIgo=;.lua+%2f%2e%2e%2f%2e%2e%2fa%2elua" "" mempty) <>
-+ B.para (B.image "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" "" mempty)
-+ runIOorExplode $ do
-+ fillMediaBag d
-+ extractMedia "foo" d
-+ exists1 <- doesFileExist ("foo" </> "moon.jpg")
-+ assertBool "file in directory extract with original name" exists1
-+ exists2 <- doesFileExist ("foo" </> "f9d88c3dbe18f6a7f5670e994a947d51216cdf0e.jpg")
-+ assertBool "file above directory extracted with hashed name" exists2
-+ exists3 <- doesFileExist ("foo" </> "2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua")
-+ exists4 <- doesFileExist "a.lua"
-+ assertBool "data uri with malicious payload does not get written to arbitrary location"
-+ (exists3 && not exists4)
-+ exists5 <- doesFileExist ("foo" </> "d5fceb6532643d0d84ffe09c40c481ecdf59e15a.gif")
-+ assertBool "data uri with gif is properly decoded" exists5
-+ setCurrentDirectory olddir
-+ ]
---- a/test/test-pandoc.hs
-+++ b/test/test-pandoc.hs
-@@ -50,6 +50,7 @@ import qualified Tests.Writers.RST
- import qualified Tests.Writers.AnnotatedTable
- import qualified Tests.Writers.TEI
- import qualified Tests.Writers.Markua
-+import qualified Tests.MediaBag
- import Text.Pandoc.Shared (inDirectory)
-
- tests :: FilePath -> TestTree
-@@ -57,6 +58,7 @@ tests pandocPath = testGroup "pandoc tes
- [ Tests.Command.tests
- , testGroup "Old" (Tests.Old.tests pandocPath)
- , testGroup "Shared" Tests.Shared.tests
-+ , testGroup "MediaBag" Tests.MediaBag.tests
- , testGroup "Writers"
- [ testGroup "Native" Tests.Writers.Native.tests
- , testGroup "ConTeXt" Tests.Writers.ConTeXt.tests
=====================================
p/haskell-pandoc/debian/patches/020230623.4~5246f02.patch deleted
=====================================
@@ -1,52 +0,0 @@
-Description: improve tests for fillMediaBag/extractMedia
- Ensure that the current directory is not changed up if a test fails,
- and fix messages for the assertion failures.
-Origin: upstream, https://github.com/jgm/pandoc/commit/5246f02
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-35936
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/test/Tests/MediaBag.hs
-+++ b/test/Tests/MediaBag.hs
-@@ -6,16 +6,15 @@
- -- import Tests.Helpers
- import Text.Pandoc.Class (extractMedia, fillMediaBag, runIOorExplode)
- import System.IO.Temp (withTempDirectory)
-+import Text.Pandoc.Shared (inDirectory)
- import System.FilePath
- import Text.Pandoc.Builder as B
--import System.Directory (doesFileExist, copyFile, setCurrentDirectory, getCurrentDirectory)
-+import System.Directory (doesFileExist, copyFile)
-
- tests :: [TestTree]
- tests = [
- testCase "test fillMediaBag & extractMedia" $
-- withTempDirectory "." "extractMediaTest" $ \tmpdir -> do
-- olddir <- getCurrentDirectory
-- setCurrentDirectory tmpdir
-+ withTempDirectory "." "extractMediaTest" $ \tmpdir -> inDirectory tmpdir $ do
- copyFile "../../test/lalune.jpg" "moon.jpg"
- let d = B.doc $
- B.para (B.image "../../test/lalune.jpg" "" mempty) <>
-@@ -26,14 +25,13 @@
- fillMediaBag d
- extractMedia "foo" d
- exists1 <- doesFileExist ("foo" </> "moon.jpg")
-- assertBool "file in directory extract with original name" exists1
-+ assertBool "file in directory is not extracted with original name" exists1
- exists2 <- doesFileExist ("foo" </> "f9d88c3dbe18f6a7f5670e994a947d51216cdf0e.jpg")
-- assertBool "file above directory extracted with hashed name" exists2
-+ assertBool "file above directory is not extracted with hashed name" exists2
- exists3 <- doesFileExist ("foo" </> "2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua")
- exists4 <- doesFileExist "a.lua"
-- assertBool "data uri with malicious payload does not get written to arbitrary location"
-+ assertBool "data uri with malicious payload gets written outside of destination dir"
- (exists3 && not exists4)
- exists5 <- doesFileExist ("foo" </> "d5fceb6532643d0d84ffe09c40c481ecdf59e15a.gif")
-- assertBool "data uri with gif is properly decoded" exists5
-- setCurrentDirectory olddir
-+ assertBool "data uri with gif is not properly decoded" exists5
- ]
=====================================
p/haskell-pandoc/debian/patches/020230720~eddedbf.patch deleted
=====================================
@@ -1,90 +0,0 @@
-Description: ix new variant of the vulnerability in CVE-2023-35936
- Guilhem Moulin noticed that the fix to CVE-2023-35936 was incomplete.
- An attacker could get around it
- by double-encoding the malicious extension
- to create or override arbitrary files.
- .
- $ echo '![](data://image/png;base64,cHJpbnQgImhlbGxvIgo=;.lua+%252f%252e%252e%252f%252e%252e%252fb%252elua)' >b.md
- $ .cabal/bin/pandoc b.md --extract-media=bar
- <p><img
- src="bar/2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua+%2f%2e%2e%2f%2e%2e%2fb%2elua" /></p>
- $ cat b.lua
- print "hello"
- $ find bar
- bar/
- bar/2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua+
- .
- This commit adds a test case for this more complex attack
- and fixes the vulnerability.
- (The fix is quite simple:
- if the URL-unescaped filename or extension contains a '%',
- we just use the sha1 hash of the contents as the canonical name,
- just as we do if the filename contains '..'.)
-Origin: upstream, https://github.com/jgm/pandoc/commit/eddedbf
-Author: John MacFarlane <jgm at berkeley.edu>
-Bug: https://github.com/jgm/pandoc/security/advisories/GHSA-xj5q-fv23-575g
-Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-38745
-Forwarded: yes
-Last-Update: 2023-07-25
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/src/Text/Pandoc/Class/IO.hs
-+++ b/src/Text/Pandoc/Class/IO.hs
-@@ -224,6 +224,8 @@
- -> m ()
- writeMedia dir (fp, _mt, bs) = do
- -- we normalize to get proper path separators for the platform
-+ -- we unescape URI encoding, but given how insertMedia
-+ -- is written, we shouldn't have any % in a canonical media name...
- let fullpath = normalise $ dir </> unEscapeString fp
- liftIOError (createDirectoryIfMissing True) (takeDirectory fullpath)
- logIOError $ BL.writeFile fullpath bs
---- a/src/Text/Pandoc/MediaBag.hs
-+++ b/src/Text/Pandoc/MediaBag.hs
-@@ -90,16 +90,17 @@
- && Windows.isRelative fp''
- && isNothing uri
- && not (".." `isInfixOf` fp'')
-+ && '%' `notElem` fp''
- then fp''
-- else showDigest (sha1 contents) <> "." <> ext
-+ else showDigest (sha1 contents) <> ext
- fallback = case takeExtension fp'' of
- ".gz" -> getMimeTypeDef $ dropExtension fp''
- _ -> getMimeTypeDef fp''
- mt = fromMaybe fallback mbMime
- path = maybe fp'' (unEscapeString . uriPath) uri
- ext = case takeExtension path of
-- '.':e -> e
-- _ -> maybe "" T.unpack $ extensionFromMimeType mt
-+ '.':e | '%' `notElem` e -> '.':e
-+ _ -> maybe "" (\x -> '.':T.unpack x) $ extensionFromMimeType mt
-
- -- | Lookup a media item in a 'MediaBag', returning mime type and contents.
- lookupMedia :: FilePath
---- a/test/Tests/MediaBag.hs
-+++ b/test/Tests/MediaBag.hs
-@@ -19,7 +19,7 @@
- let d = B.doc $
- B.para (B.image "../../test/lalune.jpg" "" mempty) <>
- B.para (B.image "moon.jpg" "" mempty) <>
-- B.para (B.image "data://image/png;base64,cHJpbnQgImhlbGxvIgo=;.lua+%2f%2e%2e%2f%2e%2e%2fa%2elua" "" mempty) <>
-+ B.para (B.image "data:image/png;base64,cHJpbnQgImhlbGxvIgo=;.lua+%2f%2e%2e%2f%2e%2e%2fa%2elua" "" mempty) <>
- B.para (B.image "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" "" mempty)
- runIOorExplode $ do
- fillMediaBag d
-@@ -34,4 +34,14 @@
- (exists3 && not exists4)
- exists5 <- doesFileExist ("foo" </> "d5fceb6532643d0d84ffe09c40c481ecdf59e15a.gif")
- assertBool "data uri with gif is not properly decoded" exists5
-+ -- double-encoded version:
-+ let e = B.doc $
-+ B.para (B.image "data:image/png;base64,cHJpbnQgInB3bmVkIgo=;.lua+%252f%252e%252e%252f%252e%252e%252fb%252elua" "" mempty)
-+ runIOorExplode $ do
-+ fillMediaBag e
-+ extractMedia "bar" e
-+ exists6 <- doesFileExist ("bar" </> "772ceca21a2751863ec46cb23db0e7fc35b9cff8.png")
-+ exists7 <- doesFileExist "b.lua"
-+ assertBool "data uri with double-encoded malicious payload gets written outside of destination dir"
-+ (exists6 && not exists7)
- ]
=====================================
p/haskell-pandoc/debian/patches/2001_templates_avoid_privacy_breach.patch
=====================================
@@ -61,18 +61,6 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
font-size: 30px;
}
---- a/data/templates/default.html5
-+++ b/data/templates/default.html5
-@@ -32,9 +32,6 @@ $if(mathjax)$
- $endif$
- $math$
- $endif$
-- <!--[if lt IE 9]>
-- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-- <![endif]-->
- </head>
- <body>
- $for(include-before)$
--- a/src/Text/Pandoc/Options.hs
+++ b/src/Text/Pandoc/Options.hs
@@ -373,10 +373,10 @@ isEnabled :: HasSyntaxExtensions a => Ex
@@ -88,42 +76,6 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-- Update documentation in doc/filters.md if this is changed.
$(deriveJSON defaultOptions{ fieldLabelModifier =
---- a/test/lhs-test.html
-+++ b/test/lhs-test.html
-@@ -227,9 +227,6 @@
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
-- <!--[if lt IE 9]>
-- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-- <![endif]-->
- </head>
- <body>
- <h1 id="lhs-test">lhs test</h1>
---- a/test/lhs-test.html+lhs
-+++ b/test/lhs-test.html+lhs
-@@ -227,9 +227,6 @@
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
-- <!--[if lt IE 9]>
-- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-- <![endif]-->
- </head>
- <body>
- <h1 id="lhs-test">lhs test</h1>
---- a/test/writer.html5
-+++ b/test/writer.html5
-@@ -166,9 +166,6 @@
- }
- .display.math{display: block; text-align: center; margin: 0.5rem auto;}
- </style>
-- <!--[if lt IE 9]>
-- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
-- <![endif]-->
- </head>
- <body>
- <header id="title-block-header">
--- a/test/s5-fancy.html
+++ b/test/s5-fancy.html
@@ -36,8 +36,7 @@
=====================================
p/haskell-pandoc/debian/patches/8764027cbba74762fd86b2c6a370abe7f580129a.patch deleted
=====================================
@@ -1,28 +0,0 @@
-From 8764027cbba74762fd86b2c6a370abe7f580129a Mon Sep 17 00:00:00 2001
-From: John MacFarlane <jgm at berkeley.edu>
-Date: Wed, 28 Jun 2023 18:35:40 -0700
-Subject: [PATCH] Markdown reader: add strictness annotations.
-
-This fixes the memory leak noted in #8762.
-Closes #8762.
----
- src/Text/Pandoc/Readers/Markdown.hs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
-index 6038ecab19d0..0d124ae23fbd 100644
---- a/src/Text/Pandoc/Readers/Markdown.hs
-+++ b/src/Text/Pandoc/Readers/Markdown.hs
-@@ -1908,10 +1908,10 @@ regLink :: PandocMonad m
- -> F Inlines
- -> MarkdownParser m (F Inlines)
- regLink constructor lab = try $ do
-- (src, tit) <- source
-+ (!src, !tit) <- source
- rebase <- option False (True <$ guardEnabled Ext_rebase_relative_paths)
- pos <- getPosition
-- let src' = if rebase then rebasePath pos src else src
-+ let !src' = if rebase then rebasePath pos src else src
- attr <- option nullAttr $
- guardEnabled Ext_link_attributes >> attributes
- return $ constructor attr src' tit <$> lab
=====================================
p/haskell-pandoc/debian/patches/8b523749aebb67f709fe7348b412f3e5e629ceb4.patch deleted
=====================================
@@ -1,158 +0,0 @@
-From 8b523749aebb67f709fe7348b412f3e5e629ceb4 Mon Sep 17 00:00:00 2001
-From: John MacFarlane <jgm at berkeley.edu>
-Date: Wed, 6 Dec 2023 08:04:24 -0800
-Subject: [PATCH] Revert "Use base64 instead of base64-bytestring."
-
-This reverts commit 6625e9655ed2bb0c4bd4dd91b5959a103deab1cb.
-
-base64 is currently buggy on 32-bit systems. Closes #9233.
----
- pandoc.cabal | 2 +-
- src/Text/Pandoc/Class/IO.hs | 4 ++--
- src/Text/Pandoc/Readers/FB2.hs | 4 ++--
- src/Text/Pandoc/Readers/HTML.hs | 5 +++--
- src/Text/Pandoc/SelfContained.hs | 4 ++--
- src/Text/Pandoc/Writers/FB2.hs | 6 +++---
- 6 files changed, 13 insertions(+), 12 deletions(-)
-
-Index: b/pandoc.cabal
-===================================================================
---- a/pandoc.cabal
-+++ b/pandoc.cabal
-@@ -454,6 +454,7 @@ library
- aeson-pretty >= 0.8.9 && < 0.9,
- array >= 0.5 && < 0.6,
- attoparsec >= 0.12 && < 0.15,
-+ base64-bytestring >= 0.1 && < 1.3,
- binary >= 0.7 && < 0.11,
- blaze-html >= 0.9 && < 0.10,
- blaze-markup >= 0.8 && < 0.9,
-@@ -470,7 +471,6 @@ library
- directory >= 1.2.3 && < 1.4,
- doclayout >= 0.4.0.1 && < 0.5,
- doctemplates >= 0.11 && < 0.12,
-- base64 >= 0.4 && < 0.5,
- emojis >= 0.1 && < 0.2,
- exceptions >= 0.8 && < 0.11,
- file-embed >= 0.0 && < 0.1,
-Index: b/src/Text/Pandoc/Class/IO.hs
-===================================================================
---- a/src/Text/Pandoc/Class/IO.hs
-+++ b/src/Text/Pandoc/Class/IO.hs
-@@ -37,7 +37,7 @@ module Text.Pandoc.Class.IO
-
- import Control.Monad.Except (throwError)
- import Control.Monad.IO.Class (MonadIO, liftIO)
--import Data.ByteString.Base64 (decodeBase64Lenient)
-+import Data.ByteString.Base64 (decodeLenient)
- import Data.ByteString.Lazy (toChunks)
- import Data.Text (Text, pack, unpack)
- import Data.Time (TimeZone, UTCTime)
-@@ -126,7 +126,7 @@ openURL u
- uriPath = upath }) <- parseURI (T.unpack u) = do
- let (mime, rest) = break (== ',') $ unEscapeString upath
- let contents = UTF8.fromString $ drop 1 rest
-- return (decodeBase64Lenient contents, Just (T.pack mime))
-+ return (decodeLenient contents, Just (T.pack mime))
- | otherwise = do
- let toReqHeader (n, v) = (CI.mk (UTF8.fromText n), UTF8.fromText v)
- customHeaders <- map toReqHeader <$> getsCommonState stRequestHeaders
-Index: b/src/Text/Pandoc/Readers/FB2.hs
-===================================================================
---- a/src/Text/Pandoc/Readers/FB2.hs
-+++ b/src/Text/Pandoc/Readers/FB2.hs
-@@ -25,7 +25,7 @@ TODO:
- module Text.Pandoc.Readers.FB2 ( readFB2 ) where
- import Control.Monad.Except (throwError)
- import Control.Monad.State.Strict
--import Data.ByteString.Lazy.Base64
-+import Data.ByteString.Base64.Lazy
- import Data.Functor
- import Data.List (intersperse)
- import qualified Data.Map as M
-@@ -202,7 +202,7 @@ parseBinaryElement e =
- report $ IgnoredElement "binary without content-type attribute"
- (Just filename, contentType) ->
- insertMedia (T.unpack filename) contentType
-- (decodeBase64Lenient
-+ (decodeLenient
- (UTF8.fromTextLazy . TL.fromStrict . strContent $ e))
-
- -- * Type parsers
-Index: b/src/Text/Pandoc/Readers/HTML.hs
-===================================================================
---- a/src/Text/Pandoc/Readers/HTML.hs
-+++ b/src/Text/Pandoc/Readers/HTML.hs
-@@ -28,7 +28,7 @@ import Control.Applicative ((<|>))
- import Control.Monad (guard, mzero, unless, void)
- import Control.Monad.Except (throwError, catchError)
- import Control.Monad.Reader (ask, asks, lift, local, runReaderT)
--import Data.Text.Encoding.Base64 (encodeBase64)
-+import Data.ByteString.Base64 (encode)
- import Data.Char (isAlphaNum, isLetter)
- import Data.Default (Default (..), def)
- import Data.Foldable (for_)
-@@ -786,7 +786,8 @@ pSvg = do
- contents <- many (notFollowedBy (pCloses "svg") >> pAny)
- closet <- TagClose "svg" <$ (pCloses "svg" <|> eof)
- let rawText = T.strip $ renderTags' (opent : contents ++ [closet])
-- let svgData = "data:image/svg+xml;base64," <> encodeBase64 rawText
-+ let svgData = "data:image/svg+xml;base64," <>
-+ UTF8.toText (encode $ UTF8.fromText rawText)
- return $ B.imageWith (ident,cls,[]) svgData mempty mempty
-
- pCodeWithClass :: PandocMonad m => Text -> Text -> TagParser m Inlines
-Index: b/src/Text/Pandoc/SelfContained.hs
-===================================================================
---- a/src/Text/Pandoc/SelfContained.hs
-+++ b/src/Text/Pandoc/SelfContained.hs
-@@ -19,7 +19,7 @@ import Codec.Compression.GZip as Gzip
- import Control.Applicative ((<|>))
- import Control.Monad.Trans (lift)
- import Data.ByteString (ByteString)
--import Data.ByteString.Base64 (encodeBase64)
-+import Data.ByteString.Base64 (encode)
- import qualified Data.ByteString.Char8 as B
- import qualified Data.ByteString.Lazy as L
- import qualified Data.Text as T
-@@ -46,7 +46,7 @@ makeDataURI :: (MimeType, ByteString) ->
- makeDataURI (mime, raw) =
- if textual
- then "data:" <> mime' <> "," <> T.pack (escapeURIString isOk (toString raw))
-- else "data:" <> mime' <> ";base64," <> encodeBase64 raw
-+ else "data:" <> mime' <> ";base64," <> toText (encode raw)
- where textual = "text/" `T.isPrefixOf` mime
- mime' = if textual && T.any (== ';') mime
- then mime <> ";charset=utf-8"
-Index: b/src/Text/Pandoc/Writers/FB2.hs
-===================================================================
---- a/src/Text/Pandoc/Writers/FB2.hs
-+++ b/src/Text/Pandoc/Writers/FB2.hs
-@@ -21,16 +21,16 @@ module Text.Pandoc.Writers.FB2 (writeFB2
- import Control.Monad (zipWithM, liftM)
- import Control.Monad.Except (catchError, throwError)
- import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify)
--import Data.ByteString.Base64 (encodeBase64)
-+import Data.ByteString.Base64 (encode)
- import Data.Char (isAscii, isControl, isSpace)
- import Data.Either (lefts, rights)
- import Data.List (intercalate)
- import Data.Text (Text)
- import qualified Data.Text as T
- import qualified Data.Text.Lazy as TL
-+import qualified Data.Text.Encoding as TE
- import Text.Pandoc.URI (urlEncode, isURI)
- import Text.Pandoc.XML.Light as X
--
- import Text.Pandoc.Class.PandocMonad (PandocMonad, report)
- import qualified Text.Pandoc.Class.PandocMonad as P
- import Text.Pandoc.Definition
-@@ -237,7 +237,7 @@ fetchImage href link = do
- report $ CouldNotDetermineMimeType link
- return Nothing
- Just mime -> return $ Just (mime,
-- encodeBase64 bs))
-+ TE.decodeUtf8 $ encode bs))
- (\e ->
- do report $ CouldNotFetchResource link (tshow e)
- return Nothing)
=====================================
p/haskell-pandoc/debian/patches/f9153e86bbb0b0b5a6722dded757b43c59f3e057.patch deleted
=====================================
@@ -1,32 +0,0 @@
-From f9153e86bbb0b0b5a6722dded757b43c59f3e057 Mon Sep 17 00:00:00 2001
-From: John MacFarlane <jgm at berkeley.edu>
-Date: Sun, 27 Aug 2023 10:57:09 -0700
-Subject: [PATCH] Update tests for skylighting-format-blaze-html change.
-
----
- test/lhs-test.html | 2 +-
- test/lhs-test.html+lhs | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- a/test/lhs-test.html
-+++ b/test/lhs-test.html
-@@ -164,7 +164,7 @@
- .display.math{display: block; text-align: center; margin: 0.5rem auto;}
- /* CSS for syntax highlighting */
- pre > code.sourceCode { white-space: pre; position: relative; }
-- pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
-+ pre > code.sourceCode > span { line-height: 1.25; }
- pre > code.sourceCode > span:empty { height: 1.2em; }
- .sourceCode { overflow: visible; }
- code.sourceCode > span { color: inherit; text-decoration: inherit; }
---- a/test/lhs-test.html+lhs
-+++ b/test/lhs-test.html+lhs
-@@ -164,7 +164,7 @@
- .display.math{display: block; text-align: center; margin: 0.5rem auto;}
- /* CSS for syntax highlighting */
- pre > code.sourceCode { white-space: pre; position: relative; }
-- pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
-+ pre > code.sourceCode > span { line-height: 1.25; }
- pre > code.sourceCode > span:empty { height: 1.2em; }
- .sourceCode { overflow: visible; }
- code.sourceCode > span { color: inherit; text-decoration: inherit; }
=====================================
p/haskell-pandoc/debian/patches/series
=====================================
@@ -1,13 +1,4 @@
-f9153e86bbb0b0b5a6722dded757b43c59f3e057.patch
undo-xml-light-internal-library
-020230620~5e381e3.patch
-020230623.1~54561e9.patch
-020230623.2~df4f13b.patch
-020230623.3~fe62da6.patch
-020230623.4~5246f02.patch
-020230720~eddedbf.patch
-8b523749aebb67f709fe7348b412f3e5e629ceb4.patch
2001_templates_avoid_privacy_breach.patch
2002_program_package_hint.patch
use-python3.patch
-8764027cbba74762fd86b2c6a370abe7f580129a.patch
=====================================
p/haskell-pandoc/debian/patches/undo-xml-light-internal-library
=====================================
@@ -1,6 +1,6 @@
--- a/pandoc.cabal
+++ b/pandoc.cabal
-@@ -445,24 +445,9 @@ common common-executable
+@@ -442,24 +442,9 @@ common common-executable
build-depends: pandoc
ghc-options: -rtsopts -with-rtsopts=-A8m -threaded
@@ -10,7 +10,7 @@
- xml-conduit >= 1.9.1.1 && < 1.10,
- xml-types >= 0.3 && < 0.4,
- containers >= 0.6.0.1 && < 0.7,
-- text >= 1.1.1.0 && < 2.1
+- text >= 1.1.1.0 && < 2.2
-
- hs-source-dirs: xml-light
- exposed-modules: Text.Pandoc.XML.Light,
@@ -25,17 +25,17 @@
+ build-depends: Glob >= 0.7 && < 0.11,
JuicyPixels >= 3.1.6.1 && < 3.4,
SHA >= 1.6 && < 1.7,
- aeson >= 2.0.1.0 && < 2.2,
-@@ -525,6 +510,8 @@ library
+ aeson >= 2.0.1.0 && < 2.3,
+@@ -522,6 +507,8 @@ library
zip-archive >= 0.4.3 && < 0.5,
zlib >= 0.5 && < 0.7,
xml >= 1.3.12 && < 1.4,
+ xml-conduit >= 1.9.1.1 && < 1.10,
+ xml-types >= 0.3 && < 0.4,
- typst >= 0.1 && < 0.2,
+ typst >= 0.5 && < 0.5.1,
vector >= 0.12 && < 0.14
-@@ -534,6 +521,7 @@ library
+@@ -531,6 +518,7 @@ library
cpp-options: -DEMBED_DATA_FILES
other-modules: Text.Pandoc.Data.BakedIn
hs-source-dirs: src
@@ -43,7 +43,7 @@
exposed-modules: Text.Pandoc,
Text.Pandoc.App,
-@@ -631,6 +619,10 @@ library
+@@ -628,6 +616,10 @@ library
Text.Pandoc.Slides,
Text.Pandoc.Templates,
Text.Pandoc.XML,
View it on GitLab: https://salsa.debian.org/haskell-team/DHG_packages/-/commit/1f1ce800df62b3865329ac21739a56d564643463
--
View it on GitLab: https://salsa.debian.org/haskell-team/DHG_packages/-/commit/1f1ce800df62b3865329ac21739a56d564643463
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-haskell-commits/attachments/20241008/a5a0ed8a/attachment-0001.htm>
More information about the Pkg-haskell-commits
mailing list