FreeBSD Bugzilla – Attachment 244247 Details for
Bug 273260
www/hs-gitit: Restore and update to 0.15.1.1
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
www/hs-gitit: Restore and update to 0.15.1.1
hs-gitit-0.15.1.1.patch (text/plain), 145.38 KB, created by
Johannes 5
on 2023-08-21 10:48:52 UTC
(
hide
)
Description:
www/hs-gitit: Restore and update to 0.15.1.1
Filename:
MIME Type:
Creator:
Johannes 5
Created:
2023-08-21 10:48:52 UTC
Size:
145.38 KB
patch
obsolete
>From dd43fd385071f884c59dcc4130d56dd59ee77d15 Mon Sep 17 00:00:00 2001 >From: Johannes 5 Joemann <joemann@beefree.free.de> >Date: Sun, 20 Aug 2023 20:16:05 +0200 >Subject: [PATCH] www/hs-gitit: Restore and update to 0.15.1.1 > >--- > MOVED | 1 - > www/hs-gitit/Makefile | 244 ++++++ > www/hs-gitit/distinfo | 513 ++++++++++++ > .../files/extra-patch-data_default.conf | 22 + > www/hs-gitit/files/extra-patch-exports | 612 ++++++++++++++ > .../extra-patch-src_Network_Gitit_Config.hs | 22 + > .../extra-patch-src_Network_Gitit_Export.hs | 31 + > .../extra-patch-src_Network_Gitit_Layout.hs | 11 + > .../extra-patch-src_Network_Gitit_Types.hs | 15 + > www/hs-gitit/files/gitit.in | 236 ++++++ > ...ps_filestore-0.6.5_Data_FileStore_Darcs.hs | 22 + > ...ch-__cabal__deps_pandoc-3.1.4_pandoc.cabal | 11 + > www/hs-gitit/files/patch-data_markup.DocBook | 748 ++++++++++++++++++ > .../files/patch-data_markupHelp_DocBook | 125 +++ > www/hs-gitit/files/patch-gitit.cabal | 31 + > .../patch-src_Network_Gitit_Initialize.hs | 14 + > .../files/patch-src_Network_Gitit_Util.hs | 10 + > www/hs-gitit/pkg-descr | 19 + > www/hs-gitit/pkg-plist | 71 ++ > 19 files changed, 2757 insertions(+), 1 deletion(-) > create mode 100644 www/hs-gitit/Makefile > create mode 100644 www/hs-gitit/distinfo > create mode 100644 www/hs-gitit/files/extra-patch-data_default.conf > create mode 100644 www/hs-gitit/files/extra-patch-exports > create mode 100644 www/hs-gitit/files/extra-patch-src_Network_Gitit_Config.hs > create mode 100644 www/hs-gitit/files/extra-patch-src_Network_Gitit_Export.hs > create mode 100644 www/hs-gitit/files/extra-patch-src_Network_Gitit_Layout.hs > create mode 100644 www/hs-gitit/files/extra-patch-src_Network_Gitit_Types.hs > create mode 100755 www/hs-gitit/files/gitit.in > create mode 100644 www/hs-gitit/files/patch-__cabal__deps_filestore-0.6.5_Data_FileStore_Darcs.hs > create mode 100644 www/hs-gitit/files/patch-__cabal__deps_pandoc-3.1.4_pandoc.cabal > create mode 100644 www/hs-gitit/files/patch-data_markup.DocBook > create mode 100644 www/hs-gitit/files/patch-data_markupHelp_DocBook > create mode 100644 www/hs-gitit/files/patch-gitit.cabal > create mode 100644 www/hs-gitit/files/patch-src_Network_Gitit_Initialize.hs > create mode 100644 www/hs-gitit/files/patch-src_Network_Gitit_Util.hs > create mode 100644 www/hs-gitit/pkg-descr > create mode 100644 www/hs-gitit/pkg-plist > >diff --git a/MOVED b/MOVED >index b4312a4bb651..861105a8f56c 100644 >--- a/MOVED >+++ b/MOVED >@@ -66,7 +66,6 @@ x11-toolkits/hs-wxcore||2018-10-23|Has expired: Doesn't build with recent GHC ve > devel/hs-TypeCompose||2018-10-23|Has expired: Doesn't build with recent GHC version > devel/hs-PSQueue||2018-10-23|Has expired: Doesn't build with recent GHC version > devel/hs-blaze-builder-enumerator||2018-10-23|Has expired: Doesn't build with recent GHC version >-www/hs-gitit||2018-10-23|Has expired: Doesn't build with newest packages > cad/kicad-library||2018-10-25|Has expired: KiCad has been upgraded to 5.0.0 > devel/linux-kernel||2018-10-29|Has expired: no longer useful > audio/py-musicbrainz2||2018-10-29|Has expired: Musicbrainz Web Service 1.0 support ended 2018-08-01 >diff --git a/www/hs-gitit/Makefile b/www/hs-gitit/Makefile >new file mode 100644 >index 000000000000..d2aa255c5174 >--- /dev/null >+++ b/www/hs-gitit/Makefile >@@ -0,0 +1,244 @@ >+PORTNAME= gitit >+PORTVERSION= 0.15.1.1 >+CATEGORIES= www haskell >+ >+MAINTAINER= joemann@beefree.free.de >+COMMENT= Wiki using happstack and pandoc, and git or darcs or mercurial >+WWW= https://github.com/jgm/gitit >+ >+LICENSE= GPLv2 >+ >+USES= cabal >+ >+OPTIONS_DEFINE= PLUGINS EXPORTS >+OPTIONS_DEFAULT= PLUGINS >+ >+# "Plugin support makes the gitit executable considerably larger >+# and more memory-hungry". (jgm) >+PLUGINS_DESC= Enable support for plugins >+PLUGINS_CABAL_FLAGS= plugins >+ >+# "This feature is a security risk; it provided multiple >+# vectors by which contents of files could be exposed". (jgm) >+EXPORTS_DESC= Enable page exports to many formats (insecure!) >+# This is the commit which removed the export options: >+# https://github.com/jgm/gitit/commit/eed32638f4f6e3b2f4b8a9a04c4b72001acf9ad8 >+# To re-enable exports in gitit we have to revert it: >+# git diff --no-prefix eed3263 735096f > extra-patch-exports >+EXPORTS_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-exports \ >+ ${PATCHDIR}/extra-patch-data_default.conf \ >+ ${PATCHDIR}/extra-patch-src_Network_Gitit_Config.hs \ >+ ${PATCHDIR}/extra-patch-src_Network_Gitit_Export.hs \ >+ ${PATCHDIR}/extra-patch-src_Network_Gitit_Layout.hs \ >+ ${PATCHDIR}/extra-patch-src_Network_Gitit_Types.hs >+# Besides applying the above patches one also has to set "exports: yes" >+# in a gitit instance's config file to enable exports for that instance. >+ >+USE_CABAL= ConfigFile-1.1.4_1 \ >+ Diff-0.4.1 \ >+ Glob-0.10.2_3 \ >+ HStringTemplate-0.8.8_5 \ >+ HTTP-4000.4.1_2 \ >+ JuicyPixels-3.3.8 \ >+ MissingH-1.6.0.0 \ >+ OneTuple-0.4.1.1 \ >+ Only-0.1_1 \ >+ QuickCheck-2.14.3 \ >+ SHA-1.6.4.4 \ >+ StateVar-1.2.2 \ >+ aeson-2.1.2.1_3 \ >+ aeson-pretty-0.8.10 \ >+ ansi-terminal-1.0 \ >+ ansi-terminal-types-0.11.5_1 \ >+ appar-0.1.8 \ >+ asn1-encoding-0.9.6_2 \ >+ asn1-parse-0.9.5 \ >+ asn1-types-0.3.4 \ >+ assoc-1.1 \ >+ async-2.2.4_3 \ >+ attoparsec-0.14.4_3 \ >+ base-compat-0.12.2 \ >+ base-compat-batteries-0.12.2 \ >+ base-orphans-0.9.0 \ >+ base16-bytestring-1.0.2.0 \ >+ base64-0.4.2.4_3 \ >+ base64-bytestring-1.2.1.0 \ >+ basement-0.0.16 \ >+ bifunctors-5.6.1 \ >+ bitvec-1.1.4.0 \ >+ blaze-builder-0.4.2.2_1 \ >+ blaze-html-0.9.1.2_2 \ >+ blaze-markup-0.8.2.8_4 \ >+ byteorder-1.0.4 \ >+ cabal-doctest-1.0.9_3 \ >+ case-insensitive-1.2.1.0 \ >+ cassava-0.5.3.0_1 \ >+ cereal-0.5.8.3 \ >+ citeproc-0.8.1 \ >+ colour-2.3.6 \ >+ commonmark-0.2.3 \ >+ commonmark-extensions-0.2.3.4 \ >+ commonmark-pandoc-0.2.1.3 \ >+ comonad-5.0.8_1 \ >+ conduit-1.3.5 \ >+ conduit-extra-1.3.6 \ >+ contravariant-1.5.5 \ >+ cookie-0.4.6 \ >+ cryptohash-md5-0.11.101.0_2 \ >+ cryptohash-sha1-0.11.101.0_2 \ >+ crypton-0.33 \ >+ crypton-connection-0.3.1 \ >+ crypton-x509-1.7.6_1 \ >+ crypton-x509-store-1.6.9 \ >+ crypton-x509-system-1.6.7 \ >+ crypton-x509-validation-1.6.12 \ >+ cryptonite-0.30 \ >+ css-text-0.1.3.0 \ >+ data-default-0.7.1.1 \ >+ data-default-class-0.1.2.0 \ >+ data-default-instances-containers-0.0.1 \ >+ data-default-instances-dlist-0.0.1 \ >+ data-default-instances-old-locale-0.0.1 \ >+ data-fix-0.3.2_4 \ >+ digest-0.0.1.7 \ >+ distributive-0.6.2.1_1 \ >+ dlist-1.0 \ >+ doclayout-0.4.0.1 \ >+ doctemplates-0.11 \ >+ emojis-0.1.2 \ >+ entropy-0.4.1.10_1 \ >+ extensible-exceptions-0.1.1.4 \ >+ feed-1.3.2.1_1 \ >+ file-embed-0.0.15.0 \ >+ filestore-0.6.5_1 \ >+ foldable1-classes-compat-0.1_2 \ >+ generically-0.1.1_1 \ >+ ghc-paths-0.1.0.12_5 \ >+ gridtables-0.1.0.0 \ >+ haddock-library-1.11.0_2 \ >+ happstack-server-7.8.0.2 \ >+ happy-1.20.1.1 \ >+ hashable-1.4.2.0_1 \ >+ haskell-lexer-1.1.1 \ >+ hoauth2-2.8.0 \ >+ hourglass-0.2.12 \ >+ hsc2hs-0.68.9 \ >+ hslogger-1.3.1.0_7 \ >+ html-1.0.1.2 \ >+ http-client-0.7.13.1_1 \ >+ http-client-tls-0.3.6.2 \ >+ http-conduit-2.3.8.2 \ >+ http-types-0.12.3 \ >+ indexed-traversable-0.1.2.1 \ >+ indexed-traversable-instances-0.1.1.2_1 \ >+ integer-logarithms-1.0.3.1_4 \ >+ iproute-1.7.12 \ >+ ipynb-0.2_1 \ >+ jira-wiki-markup-1.5.1 \ >+ json-0.10_1 \ >+ libyaml-0.1.2_1 \ >+ memory-0.18.0 \ >+ microlens-0.4.13.1 \ >+ mime-types-0.1.1.0 \ >+ monad-control-1.0.3.1 \ >+ mono-traversable-1.0.15.3 \ >+ network-3.1.4.0 \ >+ network-bsd-2.8.1.0_4 \ >+ network-info-0.2.1 \ >+ network-uri-2.6.4.2 \ >+ old-locale-1.0.0.7_2 \ >+ old-time-1.1.0.3_2 \ >+ ordered-containers-0.2.3 \ >+ pandoc-3.1.4 \ >+ pandoc-types-1.23 \ >+ pem-0.2.4 \ >+ pretty-show-1.10 \ >+ primitive-0.8.0.0 \ >+ random-1.2.1.1 \ >+ recaptcha-0.1.0.4 \ >+ regex-base-0.94.0.2_1 \ >+ regex-compat-0.95.2.1_2 \ >+ regex-posix-0.96.0.1_1 \ >+ regex-tdfa-1.3.2.1 \ >+ resourcet-1.3.0 \ >+ safe-0.3.19 \ >+ scientific-0.3.7.0_5 \ >+ semialign-1.3 \ >+ semigroupoids-6.0.0.1 \ >+ semigroups-0.20 \ >+ sendfile-0.7.11.4 \ >+ skylighting-0.13.3 \ >+ skylighting-core-0.13.3 \ >+ skylighting-format-ansi-0.1 \ >+ skylighting-format-blaze-html-0.1.1 \ >+ skylighting-format-context-0.1.0.2 \ >+ skylighting-format-latex-0.1 \ >+ socks-0.6.1 \ >+ split-0.2.3.5 \ >+ splitmix-0.1.0.4_2 \ >+ streaming-commons-0.2.2.6 \ >+ strict-0.5 \ >+ syb-0.7.2.3 \ >+ system-filepath-0.4.14_1 \ >+ tagged-0.8.7 \ >+ tagsoup-0.14.8 \ >+ temporary-1.3 \ >+ texmath-0.12.8 \ >+ text-conversions-0.3.1.1 \ >+ text-short-0.1.5_2 \ >+ th-abstraction-0.5.0.0 \ >+ th-compat-0.1.4_2 \ >+ th-lift-0.8.3 \ >+ th-lift-instances-0.1.20 \ >+ these-1.2 \ >+ threads-0.5.1.7_1 \ >+ time-compat-1.9.6.1_5 \ >+ time-locale-compat-0.1.1.5 \ >+ tls-1.7.0 \ >+ transformers-base-0.4.6 \ >+ transformers-compat-0.7.2 \ >+ typed-process-0.2.11.0 \ >+ typst-0.1.0.0 \ >+ typst-symbols-0.1.2 \ >+ unicode-collation-0.1.3.4 \ >+ unicode-data-0.4.0.1_1 \ >+ unicode-transforms-0.4.0.1_3 \ >+ uniplate-1.6.13_1 \ >+ unix-time-0.4.10 \ >+ unliftio-core-0.2.1.0_2 \ >+ unordered-containers-0.2.19.1_2 \ >+ uri-bytestring-0.3.3.1 \ >+ uri-bytestring-aeson-0.1.0.8 \ >+ url-2.1.3 \ >+ utf8-string-1.0.2 \ >+ uuid-1.3.15_2 \ >+ uuid-types-1.0.5_4 \ >+ vector-0.13.0.0_3 \ >+ vector-algorithms-0.9.0.1_2 \ >+ vector-stream-0.1.0.0_2 \ >+ void-0.7.3 \ >+ witherable-0.4.2_4 \ >+ xml-1.3.14_2 \ >+ xml-conduit-1.9.1.3 \ >+ xml-types-0.3.8 \ >+ xss-sanitize-0.3.7.2 \ >+ yaml-0.11.11.2_2 \ >+ zip-archive-0.4.3 \ >+ zlib-0.6.3.0_1 >+ >+# Switch off idle GC using -with_rtsopts=-I0 in gitit.cabal >+CABAL_FLAGS= with_rtsopts >+ >+CABAL_EXECUTABLES= gitit expireGititCache >+CABAL_WRAPPER_SCRIPTS= gitit >+ >+USE_RC_SUBR= gitit >+ >+post-install: >+ cd ${WRKSRC} && \ >+ ${COPYTREE_SHARE} README.markdown ${STAGEDIR}${DATADIR} && \ >+ ${COPYTREE_SHARE} data ${STAGEDIR}${DATADIR} >+ cd ${STAGEDIR}${DATADIR} && \ >+ ${FIND} data -name '*.orig' -exec ${RM} {} ";" >+ >+.include <bsd.port.mk> >diff --git a/www/hs-gitit/distinfo b/www/hs-gitit/distinfo >new file mode 100644 >index 000000000000..61e515f67cdf >--- /dev/null >+++ b/www/hs-gitit/distinfo >@@ -0,0 +1,513 @@ >+TIMESTAMP = 1688557589 >+SHA256 (cabal/gitit-0.15.1.1/gitit-0.15.1.1.tar.gz) = 90bc0d30386be90f11e4a6e67963738580327da0646a4c79ea45e16eda02d55d >+SIZE (cabal/gitit-0.15.1.1/gitit-0.15.1.1.tar.gz) = 275402 >+SHA256 (cabal/ConfigFile-1.1.4/ConfigFile-1.1.4.tar.gz) = ae087b359ff2945a62b671449227e0a811d143ee651179f4e7e9c66548e0f514 >+SIZE (cabal/ConfigFile-1.1.4/ConfigFile-1.1.4.tar.gz) = 28969 >+SHA256 (cabal/ConfigFile-1.1.4/revision/1.cabal) = 4cb481f88bbbbba5a61d2c1aa76fda01ae3d8ba9d11439a6cf56a86bfa791883 >+SIZE (cabal/ConfigFile-1.1.4/revision/1.cabal) = 2097 >+SHA256 (cabal/Diff-0.4.1/Diff-0.4.1.tar.gz) = fd5e4aaac7219bcbb14834fb8580ebe0aae905958d0ad74f5338ea290b372670 >+SIZE (cabal/Diff-0.4.1/Diff-0.4.1.tar.gz) = 8759 >+SHA256 (cabal/Glob-0.10.2/Glob-0.10.2.tar.gz) = 6af672ac8427d35cbd42d64142dc288feab266f0be92dae3c696e8860d8173c0 >+SIZE (cabal/Glob-0.10.2/Glob-0.10.2.tar.gz) = 30226 >+SHA256 (cabal/Glob-0.10.2/revision/3.cabal) = dd2ddbecae8f84e8f4cacb5b856901a19c25ceaa11f2525d3ee88d034acb0081 >+SIZE (cabal/Glob-0.10.2/revision/3.cabal) = 2938 >+SHA256 (cabal/HStringTemplate-0.8.8/HStringTemplate-0.8.8.tar.gz) = 717df416550bdc62f2070c1a86238efe535b0fa41c5fd708c4f631f927880cd9 >+SIZE (cabal/HStringTemplate-0.8.8/HStringTemplate-0.8.8.tar.gz) = 18043 >+SHA256 (cabal/HStringTemplate-0.8.8/revision/5.cabal) = 8cf2c140b0f7c6357dc21d0a9c218233309220278e836208f4b8e911be1d1492 >+SIZE (cabal/HStringTemplate-0.8.8/revision/5.cabal) = 1985 >+SHA256 (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453 >+SIZE (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = 74330 >+SHA256 (cabal/HTTP-4000.4.1/revision/2.cabal) = d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae >+SIZE (cabal/HTTP-4000.4.1/revision/2.cabal) = 5862 >+SHA256 (cabal/JuicyPixels-3.3.8/JuicyPixels-3.3.8.tar.gz) = d3a0f6ca3515a1b3d526cbf79f2e0b0aab57f208ab216f9c26437bbcd86fb63e >+SIZE (cabal/JuicyPixels-3.3.8/JuicyPixels-3.3.8.tar.gz) = 132479 >+SHA256 (cabal/MissingH-1.6.0.0/MissingH-1.6.0.0.tar.gz) = fc3b9684a0a14fc9a0afdd9c8ffb1ae93db122c7150b1eea1769065658092d4f >+SIZE (cabal/MissingH-1.6.0.0/MissingH-1.6.0.0.tar.gz) = 109652 >+SHA256 (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = c9e764d4ee1e57cad8341bd5d0de33ba3a52b6793fc1309679f2bf60c030bb2b >+SIZE (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = 5601 >+SHA256 (cabal/Only-0.1/Only-0.1.tar.gz) = ab7aa193e8c257d3bda6b0b3c1cbcf74cdaa85ab08cb20c2dd62ba248c1ab265 >+SIZE (cabal/Only-0.1/Only-0.1.tar.gz) = 1960 >+SHA256 (cabal/Only-0.1/revision/1.cabal) = f92f5da97e647451f1ee7f5bf44914fb75062d08ccd3f36b2000d649c63d13aa >+SIZE (cabal/Only-0.1/revision/1.cabal) = 1373 >+SHA256 (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501 >+SIZE (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 76849 >+SHA256 (cabal/SHA-1.6.4.4/SHA-1.6.4.4.tar.gz) = 6bd950df6b11a3998bb1452d875d2da043ee43385459afc5f16d471d25178b44 >+SIZE (cabal/SHA-1.6.4.4/SHA-1.6.4.4.tar.gz) = 2715144 >+SHA256 (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5e4b39da395656a59827b0280508aafdc70335798b50e5d6fd52596026251825 >+SIZE (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5048 >+SHA256 (cabal/aeson-2.1.2.1/aeson-2.1.2.1.tar.gz) = 5d4042b903ce181ee023bbf908f37a3f55e820c5f0df102683b87f963e3522c6 >+SIZE (cabal/aeson-2.1.2.1/aeson-2.1.2.1.tar.gz) = 335908 >+SHA256 (cabal/aeson-2.1.2.1/revision/3.cabal) = 5b8d62a60963a925c4d123a46e42a8e235a32188522c9f119f64ac228c2612a7 >+SIZE (cabal/aeson-2.1.2.1/revision/3.cabal) = 6359 >+SHA256 (cabal/aeson-pretty-0.8.10/aeson-pretty-0.8.10.tar.gz) = 2a21f2cd78adcb149ceba770239ed664519552911e7680172b18ff695cfa7ae5 >+SIZE (cabal/aeson-pretty-0.8.10/aeson-pretty-0.8.10.tar.gz) = 5894 >+SHA256 (cabal/ansi-terminal-1.0/ansi-terminal-1.0.tar.gz) = 0798a98f79189e62b5ff0aa247ba95fc3845f0f6f1e14ecceb37facfbdd5cfc9 >+SIZE (cabal/ansi-terminal-1.0/ansi-terminal-1.0.tar.gz) = 31745 >+SHA256 (cabal/ansi-terminal-types-0.11.5/ansi-terminal-types-0.11.5.tar.gz) = bf7b230389f43105100a6d5740822598a88b38eaaf7d042de595ccf72db4fdd1 >+SIZE (cabal/ansi-terminal-types-0.11.5/ansi-terminal-types-0.11.5.tar.gz) = 4660 >+SHA256 (cabal/ansi-terminal-types-0.11.5/revision/1.cabal) = f78440dfd95c4509e88855ac7cc2d9566ddf956a92c1290404cac93ad1a1b00a >+SIZE (cabal/ansi-terminal-types-0.11.5/revision/1.cabal) = 1482 >+SHA256 (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = c4ceeddc26525b58d82c41b6d3e32141371a200a6794aae185b6266ccc81631f >+SIZE (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = 4037 >+SHA256 (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = d9f8deabd3b908e5cf83c0d813c08dc0143b3ec1c0d97f660d2cfa02c1c8da0a >+SIZE (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = 17343 >+SHA256 (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 27ed8f6043aed79630313bb931f7c8e2b510f0b4586cd55c16ae040c7d1ea098 >+SIZE (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 2060 >+SHA256 (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 8f1fe1344d30b39dc594d74df2c55209577722af1497204b4c2b6d6e8747f39e >+SIZE (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 2951 >+SHA256 (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8 >+SIZE (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 6472 >+SHA256 (cabal/assoc-1.1/assoc-1.1.tar.gz) = 7aa2e6548b3d9d49a286ac20639479aaf6c47a1446113ed784d98737c5f60df4 >+SIZE (cabal/assoc-1.1/assoc-1.1.tar.gz) = 3193 >+SHA256 (cabal/async-2.2.4/async-2.2.4.tar.gz) = 484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725 >+SIZE (cabal/async-2.2.4/async-2.2.4.tar.gz) = 14148 >+SHA256 (cabal/async-2.2.4/revision/3.cabal) = 46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08 >+SIZE (cabal/async-2.2.4/revision/3.cabal) = 3112 >+SHA256 (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c >+SIZE (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 160701 >+SHA256 (cabal/attoparsec-0.14.4/revision/3.cabal) = 50475b722305175f57a3ee3dbaee10aa4b91f61c9717b85b718a7df37c223fb2 >+SIZE (cabal/attoparsec-0.14.4/revision/3.cabal) = 5679 >+SHA256 (cabal/base-compat-0.12.2/base-compat-0.12.2.tar.gz) = a62adc883a5ac436f80e4ae02c3c56111cf1007492f267c291139a668d2150bd >+SIZE (cabal/base-compat-0.12.2/base-compat-0.12.2.tar.gz) = 36393 >+SHA256 (cabal/base-compat-batteries-0.12.2/base-compat-batteries-0.12.2.tar.gz) = ede9092e07f904e0759160bf1ecd3fb7eb043bae6dc89a37c3dc94829ec5eb99 >+SIZE (cabal/base-compat-batteries-0.12.2/base-compat-batteries-0.12.2.tar.gz) = 17645 >+SHA256 (cabal/base-orphans-0.9.0/base-orphans-0.9.0.tar.gz) = 613ed4d8241ed5a648a59ae6569a6962990bb545711d020d49fb83fa12d16e62 >+SIZE (cabal/base-orphans-0.9.0/base-orphans-0.9.0.tar.gz) = 26025 >+SHA256 (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784 >+SIZE (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 7219 >+SHA256 (cabal/base64-0.4.2.4/base64-0.4.2.4.tar.gz) = 640a2d0afcb07e1de2e0a13a5e942b0265781c5942bd642a8793e7b019be3585 >+SIZE (cabal/base64-0.4.2.4/base64-0.4.2.4.tar.gz) = 22065 >+SHA256 (cabal/base64-0.4.2.4/revision/3.cabal) = 10103a0b30d5028b8e1ee9811b76b946ca7713bf8234549191b69f55ee0599d5 >+SIZE (cabal/base64-0.4.2.4/revision/3.cabal) = 2862 >+SHA256 (cabal/base64-bytestring-1.2.1.0/base64-bytestring-1.2.1.0.tar.gz) = fbf8ed30edde271eb605352021431d8f1b055f95a56af31fe2eacf6bdfdc49c9 >+SIZE (cabal/base64-bytestring-1.2.1.0/base64-bytestring-1.2.1.0.tar.gz) = 13743 >+SHA256 (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 7fb77e249aef76ba5aed3059d556800ce02b614597c488ba01f0a16449146300 >+SIZE (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 134837 >+SHA256 (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 06381471b5be16516a1b2c4b21a5101a3d991038bface8e0cad144c0044d57fc >+SIZE (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 38170 >+SHA256 (cabal/bitvec-1.1.4.0/bitvec-1.1.4.0.tar.gz) = 68f0b1e01604ca8bdeaef47b3621faec456d6f76d6820a321eccd4d3749454a8 >+SIZE (cabal/bitvec-1.1.4.0/bitvec-1.1.4.0.tar.gz) = 35559 >+SHA256 (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 2cdc998c021d3a5f2a66a95138b93386271c26a117e7676d78264a90e536af67 >+SIZE (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 60707 >+SHA256 (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = f0017df374c330de0ebe0eb15eae8c48427bddefa1d81a3cb31c0a4812ecdb08 >+SIZE (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = 3685 >+SHA256 (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c >+SIZE (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 81617 >+SHA256 (cabal/blaze-html-0.9.1.2/revision/2.cabal) = 74b89ffa665891f528f571ce9e3c2dce24f698563f14b6f5e9e0512eccdf5dc2 >+SIZE (cabal/blaze-html-0.9.1.2/revision/2.cabal) = 3062 >+SHA256 (cabal/blaze-markup-0.8.2.8/blaze-markup-0.8.2.8.tar.gz) = 43fc3f6872dc8d1be8d0fe091bd4775139b42179987f33d6490a7c5f1e07a349 >+SIZE (cabal/blaze-markup-0.8.2.8/blaze-markup-0.8.2.8.tar.gz) = 14519 >+SHA256 (cabal/blaze-markup-0.8.2.8/revision/4.cabal) = a8fe050fb93397df36c3f5b19c22628e0e54446382e0f6775e2b45c1ad999eee >+SIZE (cabal/blaze-markup-0.8.2.8/revision/4.cabal) = 2271 >+SHA256 (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919 >+SIZE (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = 2030 >+SHA256 (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 5556088496111d33810c4ae6c4a065bb37fa3315e9e8891e8000b1ab6707ba73 >+SIZE (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 10770 >+SHA256 (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 6dea0dbd1457f43d96ce1cfb1bab8b9f55d4fb82940e2bfa5aad78e6e2260656 >+SIZE (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 1517 >+SHA256 (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406 >+SIZE (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 53609 >+SHA256 (cabal/cassava-0.5.3.0/cassava-0.5.3.0.tar.gz) = b4c8451f433ad7725cb8b9f7a7efe598ba103b16584713c91f48ae023829e9be >+SIZE (cabal/cassava-0.5.3.0/cassava-0.5.3.0.tar.gz) = 38224 >+SHA256 (cabal/cassava-0.5.3.0/revision/1.cabal) = 3e5a702f0194968ddf2ef38343318334e7c7de44b90c7822e9e20a7e98685bd1 >+SIZE (cabal/cassava-0.5.3.0/revision/1.cabal) = 6121 >+SHA256 (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 99905220661b26e5bd91130bd9772554938608a5b1d717240a6eb331121e0f6a >+SIZE (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 20166 >+SHA256 (cabal/citeproc-0.8.1/citeproc-0.8.1.tar.gz) = 33523bbd8c38f72c6d606e02d11b93254171f801be4f2a0cb4d34d6626426400 >+SIZE (cabal/citeproc-0.8.1/citeproc-0.8.1.tar.gz) = 549947 >+SHA256 (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 2cd35dcd6944a5abc9f108a5eb5ee564b6b1fa98a9ec79cefcc20b588991f871 >+SIZE (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 20675 >+SHA256 (cabal/commonmark-0.2.3/commonmark-0.2.3.tar.gz) = 745ade908c7cd8a61538d9c3e60363d5e1175fd7f544f557ff52517c8408d905 >+SIZE (cabal/commonmark-0.2.3/commonmark-0.2.3.tar.gz) = 102342 >+SHA256 (cabal/commonmark-extensions-0.2.3.4/commonmark-extensions-0.2.3.4.tar.gz) = a084efe90311f8a0d83d8622ef76f17dfdb974a84b74df454cf906b0ee64665e >+SIZE (cabal/commonmark-extensions-0.2.3.4/commonmark-extensions-0.2.3.4.tar.gz) = 37768 >+SHA256 (cabal/commonmark-pandoc-0.2.1.3/commonmark-pandoc-0.2.1.3.tar.gz) = 77adcf9074299a5b318901d057ebf49a7f032245f2aee783ef475539b0897f21 >+SIZE (cabal/commonmark-pandoc-0.2.1.3/commonmark-pandoc-0.2.1.3.tar.gz) = 4907 >+SHA256 (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13 >+SIZE (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = 15227 >+SHA256 (cabal/comonad-5.0.8/revision/1.cabal) = 1f1aabd73ec7f80f20cf078a748a60cd48d8e57277802fdf6a9ab3601a9b8f7e >+SIZE (cabal/comonad-5.0.8/revision/1.cabal) = 3631 >+SHA256 (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 2bb0d3e0eecc43e3d1d8cfc2125914f9175cde752be2d5908a1e120f321c782d >+SIZE (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 88893 >+SHA256 (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 8950c38049d892c38590d389bed49ecf880671f58ec63dd4709d9fe3d4b8f153 >+SIZE (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 33321 >+SHA256 (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 062fd66580d7aad0b5ba93e644ffa7feee69276ef50f20d4ed9f1deb7642dffa >+SIZE (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 13815 >+SHA256 (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 8c41a956c32b9733d525a53d43b0338a236a34d36658ecc4364c8249a6664baa >+SIZE (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 6219 >+SHA256 (cabal/cryptohash-md5-0.11.101.0/cryptohash-md5-0.11.101.0.tar.gz) = 3b08db0ae39df2b44e83053ad30d7546a4c6200a852c22a240a7e03ae1080f05 >+SIZE (cabal/cryptohash-md5-0.11.101.0/cryptohash-md5-0.11.101.0.tar.gz) = 11872 >+SHA256 (cabal/cryptohash-md5-0.11.101.0/revision/2.cabal) = 8d8172dfca073406d6d50a122a8a8caa53a0ea8f3827232a40b3fd7c4de85484 >+SIZE (cabal/cryptohash-md5-0.11.101.0/revision/2.cabal) = 3104 >+SHA256 (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = a4042c97ad02eb68e766577ca35c01970c33e96cfd74ccb4dd403e3476a23241 >+SIZE (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = 11563 >+SHA256 (cabal/cryptohash-sha1-0.11.101.0/revision/2.cabal) = 25be9e5bb979c1b96d7695d9cbb6a40ec345025e7a100b2d71d499812c2e89ec >+SIZE (cabal/cryptohash-sha1-0.11.101.0/revision/2.cabal) = 3094 >+SHA256 (cabal/crypton-0.33/crypton-0.33.tar.gz) = e66fa0a75c2afe149205df9f496f05d31fa94d8116551632d39e37e58fe60520 >+SIZE (cabal/crypton-0.33/crypton-0.33.tar.gz) = 618064 >+SHA256 (cabal/crypton-connection-0.3.1/crypton-connection-0.3.1.tar.gz) = 03073694f6525f975db78dbc67c34e89bb27b95cf863d4a3a77dc6ef49d81dcc >+SIZE (cabal/crypton-connection-0.3.1/crypton-connection-0.3.1.tar.gz) = 9112 >+SHA256 (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = ebb74aca2d00261e2fb4927d211ba1a174e190e5257f309e190f019727f8caff >+SIZE (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = 21557 >+SHA256 (cabal/crypton-x509-1.7.6/revision/1.cabal) = c567657a705b6d6521f9dd2de999bf530d618ec00f3b939df76a41fb0fe94281 >+SIZE (cabal/crypton-x509-1.7.6/revision/1.cabal) = 2339 >+SHA256 (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 3e6218af12e039cc291d19792db044df1647b5cf0bbc60b909a027e7595a256f >+SIZE (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 12735 >+SHA256 (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = a436261e5f5e83d85080f57a5509c8224c9e75a6e56d0c43a7d2967052b634ca >+SIZE (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = 3496 >+SHA256 (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 0e60b7e237a4fd5e7e6e7200018c7947314292ef63751cbb51877836ebe650f6 >+SIZE (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 19573 >+SHA256 (cabal/cryptonite-0.30/cryptonite-0.30.tar.gz) = 56099c8a8aa01d2ee914b670c97c1f818186dbb886e2025b73d9c2afe3496b1d >+SIZE (cabal/cryptonite-0.30/cryptonite-0.30.tar.gz) = 621062 >+SHA256 (cabal/css-text-0.1.3.0/css-text-0.1.3.0.tar.gz) = 5ff507bf3863219f41e7f2d215e5511fe15ee13d1e28bd3ee64e0b0b894bcd7a >+SIZE (cabal/css-text-0.1.3.0/css-text-0.1.3.0.tar.gz) = 4594 >+SHA256 (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = b0f95d279cd75cacaa8152a01590dc3460f7134f6840b37052abb3ba3cb2a511 >+SIZE (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = 1627 >+SHA256 (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56 >+SIZE (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 2522 >+SHA256 (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = a55e07af005c9815d82f3fc95e125db82994377c9f4a769428878701d4ec081a >+SIZE (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = 1659 >+SHA256 (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 7d683711cbf08abd7adcd5ac2be825381308d220397315a5570fe61b719b5959 >+SIZE (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 1503 >+SHA256 (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 60d3b02922958c4908d7bf2b24ddf61511665745f784227d206745784b0c0802 >+SIZE (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 1519 >+SHA256 (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 3a172d3bc0639c327345e965f9d9023e099425814b28dcdb7b60ff66d66219cc >+SIZE (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 5842 >+SHA256 (cabal/data-fix-0.3.2/revision/4.cabal) = c27b354476175581925217323e0f559d35ceff26907ceaa03cb65c6df38e3de9 >+SIZE (cabal/data-fix-0.3.2/revision/4.cabal) = 1720 >+SHA256 (cabal/digest-0.0.1.7/digest-0.0.1.7.tar.gz) = b23d6c804e6fed0ac9bb0d35b7aed5785330d63efebe296cf0073dab17e05f0a >+SIZE (cabal/digest-0.0.1.7/digest-0.0.1.7.tar.gz) = 4067 >+SHA256 (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91 >+SIZE (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = 8140 >+SHA256 (cabal/distributive-0.6.2.1/revision/1.cabal) = 0f99f5541cca04acf89b64432b03422b6408e830a8dff30e6c4334ef1a48680c >+SIZE (cabal/distributive-0.6.2.1/revision/1.cabal) = 2996 >+SHA256 (cabal/dlist-1.0/dlist-1.0.tar.gz) = 173d637328bb173fcc365f30d29ff4a94292a1e0e5558aeb3dfc11de81510115 >+SIZE (cabal/dlist-1.0/dlist-1.0.tar.gz) = 18667 >+SHA256 (cabal/doclayout-0.4.0.1/doclayout-0.4.0.1.tar.gz) = f7d3515d41abdfd7a5b69f28bf9520f591881364262698fd49686506b570b30b >+SIZE (cabal/doclayout-0.4.0.1/doclayout-0.4.0.1.tar.gz) = 38465 >+SHA256 (cabal/doctemplates-0.11/doctemplates-0.11.tar.gz) = e0080c7f030e98ce6156fd31e77df4c83b8f3ee049beee5006ce923a0169546b >+SIZE (cabal/doctemplates-0.11/doctemplates-0.11.tar.gz) = 25255 >+SHA256 (cabal/emojis-0.1.2/emojis-0.1.2.tar.gz) = 3cfe9c2ea3efbbdb9b7fc24ee6707a839d272c1deee7e39319f17a7e6feea227 >+SIZE (cabal/emojis-0.1.2/emojis-0.1.2.tar.gz) = 49333 >+SHA256 (cabal/entropy-0.4.1.10/entropy-0.4.1.10.tar.gz) = 85ac1d53f1d1c095aedd23fdb20c8e3ada04a7fd8aa6d7e6445ae6a59a277de5 >+SIZE (cabal/entropy-0.4.1.10/entropy-0.4.1.10.tar.gz) = 9060 >+SHA256 (cabal/entropy-0.4.1.10/revision/1.cabal) = 82bd7b600fb8df540dd292ed91dc781f4523eecef3bb588b14787b4851722cb1 >+SIZE (cabal/entropy-0.4.1.10/revision/1.cabal) = 2952 >+SHA256 (cabal/extensible-exceptions-0.1.1.4/extensible-exceptions-0.1.1.4.tar.gz) = 6ce5e8801760385a408dab71b53550f87629e661b260bdc2cd41c6a439b6e388 >+SIZE (cabal/extensible-exceptions-0.1.1.4/extensible-exceptions-0.1.1.4.tar.gz) = 8531 >+SHA256 (cabal/feed-1.3.2.1/feed-1.3.2.1.tar.gz) = a8f54072edaaf7e978062b9de94733e8cc43e31b2dda3446f901bf57f1815955 >+SIZE (cabal/feed-1.3.2.1/feed-1.3.2.1.tar.gz) = 107015 >+SHA256 (cabal/feed-1.3.2.1/revision/1.cabal) = 193ed27062b2fd9bc0c9967748b9dd1e657196f922d955573cecd086193a450c >+SIZE (cabal/feed-1.3.2.1/revision/1.cabal) = 4651 >+SHA256 (cabal/file-embed-0.0.15.0/file-embed-0.0.15.0.tar.gz) = f066b85d537a20252faa59489f6a854e4e8f39080f08730c9e195e418cec5bdd >+SIZE (cabal/file-embed-0.0.15.0/file-embed-0.0.15.0.tar.gz) = 7119 >+SHA256 (cabal/filestore-0.6.5/filestore-0.6.5.tar.gz) = b0052e1149e582d55078f8fd84ffb4e97111dab90ff8b589cc5ae2b6c711497c >+SIZE (cabal/filestore-0.6.5/filestore-0.6.5.tar.gz) = 32338 >+SHA256 (cabal/filestore-0.6.5/revision/1.cabal) = c7926f679e7f31af247f52c13e2060b9d94641180e17a0bed9768a1040c53ded >+SIZE (cabal/filestore-0.6.5/revision/1.cabal) = 3247 >+SHA256 (cabal/foldable1-classes-compat-0.1/foldable1-classes-compat-0.1.tar.gz) = d057c3f358e1a6b72c73519bc64ba6aa959f066c08fed69f73258555ef95ff12 >+SIZE (cabal/foldable1-classes-compat-0.1/foldable1-classes-compat-0.1.tar.gz) = 10484 >+SHA256 (cabal/foldable1-classes-compat-0.1/revision/2.cabal) = 851225c0d4ccf6ca5e4df17347490945c9928548e431f15e7e7d80c240bc4d17 >+SIZE (cabal/foldable1-classes-compat-0.1/revision/2.cabal) = 3782 >+SHA256 (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 04c5a436bec4b041f71a733f56a1bd7f435f63dde8d3eb5c1f48d55b4dbc43cf >+SIZE (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 2870 >+SHA256 (cabal/generically-0.1.1/revision/1.cabal) = 2b9b5efb6eea2fb65377565d53d85b0ccc5b37404fba4bef1d60277caa877e5e >+SIZE (cabal/generically-0.1.1/revision/1.cabal) = 1155 >+SHA256 (cabal/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz) = 6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484 >+SIZE (cabal/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz) = 2565 >+SHA256 (cabal/ghc-paths-0.1.0.12/revision/5.cabal) = 2cedd51fe0e85bd7c7edee768c229db74e071a15a1dfb9bf94bd4b0f3a0ec78b >+SIZE (cabal/ghc-paths-0.1.0.12/revision/5.cabal) = 699 >+SHA256 (cabal/gridtables-0.1.0.0/gridtables-0.1.0.0.tar.gz) = d6ac341bc7997d39a3b1f6cd811f70ab69689d9c3117ce3bc44bfb2ec55ab0ea >+SIZE (cabal/gridtables-0.1.0.0/gridtables-0.1.0.0.tar.gz) = 12279 >+SHA256 (cabal/haddock-library-1.11.0/haddock-library-1.11.0.tar.gz) = 7c075ec9a378b0a2d9d605e72135201e6c7ff316564f2c974113582f43bea20a >+SIZE (cabal/haddock-library-1.11.0/haddock-library-1.11.0.tar.gz) = 32833 >+SHA256 (cabal/haddock-library-1.11.0/revision/2.cabal) = debbb2e62f4af08a116e6f95497a478bc3034c50ddd9e9c32f47a22e70991b12 >+SIZE (cabal/haddock-library-1.11.0/revision/2.cabal) = 4023 >+SHA256 (cabal/happstack-server-7.8.0.2/happstack-server-7.8.0.2.tar.gz) = 3a5653b2e2fea383eb3c3bfecbd60348a0913c682eec9c9e133b17d80b379795 >+SIZE (cabal/happstack-server-7.8.0.2/happstack-server-7.8.0.2.tar.gz) = 86256 >+SHA256 (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 8b4e7dc5a6c5fd666f8f7163232931ab28746d0d17da8fa1cbd68be9e878881b >+SIZE (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 183409 >+SHA256 (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8 >+SIZE (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 25094 >+SHA256 (cabal/hashable-1.4.2.0/revision/1.cabal) = 585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a >+SIZE (cabal/hashable-1.4.2.0/revision/1.cabal) = 4520 >+SHA256 (cabal/haskell-lexer-1.1.1/haskell-lexer-1.1.1.tar.gz) = c8eeda569a30f115244c17920247ba2c45d11b3e30805f648a878f7855d8f349 >+SIZE (cabal/haskell-lexer-1.1.1/haskell-lexer-1.1.1.tar.gz) = 14499 >+SHA256 (cabal/hoauth2-2.8.0/hoauth2-2.8.0.tar.gz) = f73ad909ea4571f5958cee5cfb1ff87427ed333b37cb4751b035484059a2cdf6 >+SIZE (cabal/hoauth2-2.8.0/hoauth2-2.8.0.tar.gz) = 16225 >+SHA256 (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a >+SIZE (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 25797 >+SHA256 (cabal/hsc2hs-0.68.9/hsc2hs-0.68.9.tar.gz) = c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a >+SIZE (cabal/hsc2hs-0.68.9/hsc2hs-0.68.9.tar.gz) = 40442 >+SHA256 (cabal/hslogger-1.3.1.0/hslogger-1.3.1.0.tar.gz) = 7f2364f6c0b9c5b85a257267a335816126ef2471c817a42797a5d3c57acaca5b >+SIZE (cabal/hslogger-1.3.1.0/hslogger-1.3.1.0.tar.gz) = 37468 >+SHA256 (cabal/hslogger-1.3.1.0/revision/7.cabal) = 53e421418634df83ac5a0143b8d7da0fa865875b09df55d039c40a05f43f70cb >+SIZE (cabal/hslogger-1.3.1.0/revision/7.cabal) = 2978 >+SHA256 (cabal/html-1.0.1.2/html-1.0.1.2.tar.gz) = 0c35495ea33d65e69c69bc7441ec8e1af69fbb43433c2aa3406c0a13a3ab3061 >+SIZE (cabal/html-1.0.1.2/html-1.0.1.2.tar.gz) = 11021 >+SHA256 (cabal/http-client-0.7.13.1/http-client-0.7.13.1.tar.gz) = c98e86a0382fa877e320d83dbbd173c41c966a60a32c9bc597058929a7aa0e27 >+SIZE (cabal/http-client-0.7.13.1/http-client-0.7.13.1.tar.gz) = 95306 >+SHA256 (cabal/http-client-0.7.13.1/revision/1.cabal) = 6480749144f27919547733262f06a6ae3c759b57b692af53f9beb309d05a1699 >+SIZE (cabal/http-client-0.7.13.1/revision/1.cabal) = 5777 >+SHA256 (cabal/http-client-tls-0.3.6.2/http-client-tls-0.3.6.2.tar.gz) = 28438ebeee2b97b2354c9cf6d3cb1fb73ac7ebc6cb1f4d54aedf10980394aba6 >+SIZE (cabal/http-client-tls-0.3.6.2/http-client-tls-0.3.6.2.tar.gz) = 7852 >+SHA256 (cabal/http-conduit-2.3.8.2/http-conduit-2.3.8.2.tar.gz) = ed457713884ced61a905b48db29f73f710ae894cb8060a07d3736ac20aa23a05 >+SIZE (cabal/http-conduit-2.3.8.2/http-conduit-2.3.8.2.tar.gz) = 29007 >+SHA256 (cabal/http-types-0.12.3/http-types-0.12.3.tar.gz) = 4e8a4a66477459fa436a331c75e46857ec8026283df984d54f90576cd3024016 >+SIZE (cabal/http-types-0.12.3/http-types-0.12.3.tar.gz) = 13547 >+SHA256 (cabal/indexed-traversable-0.1.2.1/indexed-traversable-0.1.2.1.tar.gz) = fe854c10285debc7d6fe3e09da0928a740ebc091ad2911ae695bb007e6f746a4 >+SIZE (cabal/indexed-traversable-0.1.2.1/indexed-traversable-0.1.2.1.tar.gz) = 8905 >+SHA256 (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 0f9b4e895ccc819f74d15f913c93613cc74cab74dbb05d7e305aa387bdbe374a >+SIZE (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 3769 >+SHA256 (cabal/indexed-traversable-instances-0.1.1.2/revision/1.cabal) = b493ed83623a7cba498d31a9d36beec233406f20377f1be3bb51d4ce3bd2ceef >+SIZE (cabal/indexed-traversable-instances-0.1.1.2/revision/1.cabal) = 2536 >+SHA256 (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f >+SIZE (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9023 >+SHA256 (cabal/integer-logarithms-1.0.3.1/revision/4.cabal) = 336fb40c3af19a59dbeb4e5b7bffe4b4c7fa04ab06006a8d4b70b1febc1bb4ca >+SIZE (cabal/integer-logarithms-1.0.3.1/revision/4.cabal) = 3262 >+SHA256 (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = f1751d1579fcbc1d9f86d9d1c9ede48cb71cbeb1d7b2043491c6216e4f236b63 >+SIZE (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = 17864 >+SHA256 (cabal/ipynb-0.2/ipynb-0.2.tar.gz) = 9a743d74e95ccccfadca4a734f44c7b3e2a5b838da3f9044231590d7355191c7 >+SIZE (cabal/ipynb-0.2/ipynb-0.2.tar.gz) = 632962 >+SHA256 (cabal/ipynb-0.2/revision/1.cabal) = d3ec93f44fac7ddeb06e5419d0577321831cc903ecb176ca6be5015c55e9893a >+SIZE (cabal/ipynb-0.2/revision/1.cabal) = 1906 >+SHA256 (cabal/jira-wiki-markup-1.5.1/jira-wiki-markup-1.5.1.tar.gz) = 9ca23d369c3ccf1b3ffb209dda8e6288a5f5901fb8235113825fa48d3ae8e520 >+SIZE (cabal/jira-wiki-markup-1.5.1/jira-wiki-markup-1.5.1.tar.gz) = 25459 >+SHA256 (cabal/json-0.10/json-0.10.tar.gz) = 0c046a3c03c9332816d3c9e50319b1d1eb3c2c1baba1123a7650d047b26856ba >+SIZE (cabal/json-0.10/json-0.10.tar.gz) = 22622 >+SHA256 (cabal/json-0.10/revision/1.cabal) = d9fc6b07ce92b8894825a17d2cf14799856767eb30c8bf55962baa579207d799 >+SIZE (cabal/json-0.10/revision/1.cabal) = 3210 >+SHA256 (cabal/libyaml-0.1.2/libyaml-0.1.2.tar.gz) = 8f42d66f199fcaee255326f8f770d88b0670df56b5eb78002d6058f3a45e97b5 >+SIZE (cabal/libyaml-0.1.2/libyaml-0.1.2.tar.gz) = 63635 >+SHA256 (cabal/libyaml-0.1.2/revision/1.cabal) = 7fb663b11fcdb86503c14aa81763106ea79b1048fc29a1fe44ec346d9ecac101 >+SIZE (cabal/libyaml-0.1.2/revision/1.cabal) = 2222 >+SHA256 (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e >+SIZE (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = 41957 >+SHA256 (cabal/microlens-0.4.13.1/microlens-0.4.13.1.tar.gz) = 0a54abee8ff4f6aeb4bea0783409a3dbd28a4e7a892bac916b0fb6a71382d7fc >+SIZE (cabal/microlens-0.4.13.1/microlens-0.4.13.1.tar.gz) = 27436 >+SHA256 (cabal/mime-types-0.1.1.0/mime-types-0.1.1.0.tar.gz) = ebd01ed4e37142cb3233d4ffe55fe879b64d4a0b5802c8bc6afa1c7670f9e11b >+SIZE (cabal/mime-types-0.1.1.0/mime-types-0.1.1.0.tar.gz) = 11818 >+SHA256 (cabal/monad-control-1.0.3.1/monad-control-1.0.3.1.tar.gz) = ae0baea04d99375ef788140367179994a7178d400a8ce0d9026846546772713c >+SIZE (cabal/monad-control-1.0.3.1/monad-control-1.0.3.1.tar.gz) = 13985 >+SHA256 (cabal/mono-traversable-1.0.15.3/mono-traversable-1.0.15.3.tar.gz) = 98b220f3313d74227a4249210c8818e839678343e62b3ebb1b8c867cf2b974b7 >+SIZE (cabal/mono-traversable-1.0.15.3/mono-traversable-1.0.15.3.tar.gz) = 40461 >+SHA256 (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = b452a2afac95d9207357eb3820c719c7c7d27871ef4b6ed7bfcd03a036b9158e >+SIZE (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = 139988 >+SHA256 (cabal/network-bsd-2.8.1.0/network-bsd-2.8.1.0.tar.gz) = d94961ca15c42c798d19cde540ec12b25cc43435fb95e682399d6c1a02022d4e >+SIZE (cabal/network-bsd-2.8.1.0/network-bsd-2.8.1.0.tar.gz) = 8584 >+SHA256 (cabal/network-bsd-2.8.1.0/revision/4.cabal) = cd945ea08818281e4a8fa6f0a0640a1502aad3748546a3c197e071772452a9bd >+SIZE (cabal/network-bsd-2.8.1.0/revision/4.cabal) = 3738 >+SHA256 (cabal/network-info-0.2.1/network-info-0.2.1.tar.gz) = 9b2d88312fc8280351d5003200cc07decbb865f85d3aa7b1094b238bd6a8b404 >+SIZE (cabal/network-info-0.2.1/network-info-0.2.1.tar.gz) = 6387 >+SHA256 (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228 >+SIZE (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 31309 >+SHA256 (cabal/old-locale-1.0.0.7/old-locale-1.0.0.7.tar.gz) = dbaf8bf6b888fb98845705079296a23c3f40ee2f449df7312f7f7f1de18d7b50 >+SIZE (cabal/old-locale-1.0.0.7/old-locale-1.0.0.7.tar.gz) = 3384 >+SHA256 (cabal/old-locale-1.0.0.7/revision/2.cabal) = fa998be2c7e00cd26a6e9075bea790caaf3932caa3e9497ad69bc20380dd6911 >+SIZE (cabal/old-locale-1.0.0.7/revision/2.cabal) = 1071 >+SHA256 (cabal/old-time-1.1.0.3/old-time-1.1.0.3.tar.gz) = 1ccb158b0f7851715d36b757c523b026ca1541e2030d02239802ba39b4112bc1 >+SIZE (cabal/old-time-1.1.0.3/old-time-1.1.0.3.tar.gz) = 74219 >+SHA256 (cabal/old-time-1.1.0.3/revision/2.cabal) = c91fbb3ee73d20ccd015842b30f1f29a304893ebe0ae3128b7bbc13d5bb0d4c8 >+SIZE (cabal/old-time-1.1.0.3/revision/2.cabal) = 1328 >+SHA256 (cabal/ordered-containers-0.2.3/ordered-containers-0.2.3.tar.gz) = 36849705752f3bc367fa1d172e1ec57375418341e9d74de572ae1b6fb56a81a3 >+SIZE (cabal/ordered-containers-0.2.3/ordered-containers-0.2.3.tar.gz) = 7404 >+SHA256 (cabal/pandoc-3.1.4/pandoc-3.1.4.tar.gz) = 15b67fad7e7b9bf72b1c9dfea0010326cf8b115c009783b406db954fdb0b7997 >+SIZE (cabal/pandoc-3.1.4/pandoc-3.1.4.tar.gz) = 7266894 >+SHA256 (cabal/pandoc-types-1.23/pandoc-types-1.23.tar.gz) = 5e6721410219c0a39b05fc732de9864745592fffa8287ad6e87c66138a51162d >+SIZE (cabal/pandoc-types-1.23/pandoc-types-1.23.tar.gz) = 35901 >+SHA256 (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 770c4c1b9cd24b3db7f511f8a48404a0d098999e28573c3743a8a296bb96f8d4 >+SIZE (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 4717 >+SHA256 (cabal/pretty-show-1.10/pretty-show-1.10.tar.gz) = 307f9086e0b063d439dc4f513e36a145e8a57f23de448aefae2a6c00f6da6fd2 >+SIZE (cabal/pretty-show-1.10/pretty-show-1.10.tar.gz) = 42233 >+SHA256 (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f >+SIZE (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 57222 >+SHA256 (cabal/random-1.2.1.1/random-1.2.1.1.tar.gz) = 3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76 >+SIZE (cabal/random-1.2.1.1/random-1.2.1.1.tar.gz) = 47109 >+SHA256 (cabal/recaptcha-0.1.0.4/recaptcha-0.1.0.4.tar.gz) = a26172c3f5797e402de95b92edcb56a828cb791849b92b4238683446c970430d >+SIZE (cabal/recaptcha-0.1.0.4/recaptcha-0.1.0.4.tar.gz) = 2724 >+SHA256 (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1 >+SIZE (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 10488 >+SHA256 (cabal/regex-base-0.94.0.2/revision/1.cabal) = 4ff4425c710cddf440dfbac6cd52310bb6b23e17902390ff71c9fc7eaafc4fcc >+SIZE (cabal/regex-base-0.94.0.2/revision/1.cabal) = 2643 >+SHA256 (cabal/regex-compat-0.95.2.1/regex-compat-0.95.2.1.tar.gz) = 8f7b386c72fd605a292edfb809b8620245b4a3ab7af192ad79e36778596e7947 >+SIZE (cabal/regex-compat-0.95.2.1/regex-compat-0.95.2.1.tar.gz) = 4285 >+SHA256 (cabal/regex-compat-0.95.2.1/revision/2.cabal) = 96c83b06280ebfb6fef01864b2af9eb9e136a9832c563773f327d4197bbbb851 >+SIZE (cabal/regex-compat-0.95.2.1/revision/2.cabal) = 1705 >+SHA256 (cabal/regex-posix-0.96.0.1/regex-posix-0.96.0.1.tar.gz) = c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c >+SIZE (cabal/regex-posix-0.96.0.1/regex-posix-0.96.0.1.tar.gz) = 12853 >+SHA256 (cabal/regex-posix-0.96.0.1/revision/1.cabal) = 9dbba4b65a3bb6975d9740814be5593c6b2d2d6a0b3febc8ec940edb9a9bbdf4 >+SIZE (cabal/regex-posix-0.96.0.1/revision/1.cabal) = 2954 >+SHA256 (cabal/regex-tdfa-1.3.2.1/regex-tdfa-1.3.2.1.tar.gz) = 5c8bf8b5274dd45a9afa72bb4f51602df429b4dfd2a05275da5d78c00e7b8295 >+SIZE (cabal/regex-tdfa-1.3.2.1/regex-tdfa-1.3.2.1.tar.gz) = 82890 >+SHA256 (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = ec601785ee42a201f32adb205b8685c983f18757b1bd33d2e806d571e0f9996b >+SIZE (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = 17620 >+SHA256 (cabal/safe-0.3.19/safe-0.3.19.tar.gz) = 25043442c8f8aa95955bb17467d023630632b961aaa61e807e325d9b2c33f7a2 >+SIZE (cabal/safe-0.3.19/safe-0.3.19.tar.gz) = 11267 >+SHA256 (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = a3a121c4b3d68fb8b9f8c709ab012e48f090ed553609247a805ad070d6b343a9 >+SIZE (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = 24723 >+SHA256 (cabal/scientific-0.3.7.0/revision/5.cabal) = 26d8109106963a345368011081453d25ee1dfa6afae2b1f57b426b4bcd392d91 >+SIZE (cabal/scientific-0.3.7.0/revision/5.cabal) = 4854 >+SHA256 (cabal/semialign-1.3/semialign-1.3.tar.gz) = 628e43319f584a8dd46c124ee0685cac586e0f6f877c5ceff37c3dbb2e3cc56c >+SIZE (cabal/semialign-1.3/semialign-1.3.tar.gz) = 10543 >+SHA256 (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 7da38a9891bdf8205fd6522cdb712956b8c0bf5c52983da60295c8e057d77934 >+SIZE (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 36222 >+SHA256 (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 902d2e33c96b40a89de5957f2a9e097197afcc35e257e45b32ebe770993673e1 >+SIZE (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 18788 >+SHA256 (cabal/sendfile-0.7.11.4/sendfile-0.7.11.4.tar.gz) = 73b0be7cd6e29e859ffae741cb398eb129e0bf1c6953ef5755da0b8a020751c4 >+SIZE (cabal/sendfile-0.7.11.4/sendfile-0.7.11.4.tar.gz) = 10721 >+SHA256 (cabal/skylighting-0.13.3/skylighting-0.13.3.tar.gz) = b25c63cf342aff3c00742e08f4c80d641ebe5fd20eb7a4970450b8e0576e9b95 >+SIZE (cabal/skylighting-0.13.3/skylighting-0.13.3.tar.gz) = 1367538 >+SHA256 (cabal/skylighting-core-0.13.3/skylighting-core-0.13.3.tar.gz) = 6c6d0fae4aaa80f4dfca2b516ad8a864a6e8b5be7fdba039bd6fb00cb68c63d5 >+SIZE (cabal/skylighting-core-0.13.3/skylighting-core-0.13.3.tar.gz) = 854171 >+SHA256 (cabal/skylighting-format-ansi-0.1/skylighting-format-ansi-0.1.tar.gz) = 23dfa86c2ecd2601a2efed4967eb2ec0505a52c14776054ce4d89707c2de0a9b >+SIZE (cabal/skylighting-format-ansi-0.1/skylighting-format-ansi-0.1.tar.gz) = 5350 >+SHA256 (cabal/skylighting-format-blaze-html-0.1.1/skylighting-format-blaze-html-0.1.1.tar.gz) = b1139b4df369de93d1ec6d8a2ed02bf11d559f9eaf71c31434fb5b19ba48ef13 >+SIZE (cabal/skylighting-format-blaze-html-0.1.1/skylighting-format-blaze-html-0.1.1.tar.gz) = 4769 >+SHA256 (cabal/skylighting-format-context-0.1.0.2/skylighting-format-context-0.1.0.2.tar.gz) = 004213e13d89b692ea0912d7ffa6ee98c93146d1a7962a849ad7860697bc88bd >+SIZE (cabal/skylighting-format-context-0.1.0.2/skylighting-format-context-0.1.0.2.tar.gz) = 3249 >+SHA256 (cabal/skylighting-format-latex-0.1/skylighting-format-latex-0.1.tar.gz) = 97b66c9ab60451e41a94aa80a684e792fbe69816835f735224222beea22afb78 >+SIZE (cabal/skylighting-format-latex-0.1/skylighting-format-latex-0.1.tar.gz) = 3777 >+SHA256 (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 734447558bb061ce768f53a0df1f2401902c6bee396cc96ce627edd986ef6a73 >+SIZE (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 9759 >+SHA256 (cabal/split-0.2.3.5/split-0.2.3.5.tar.gz) = bf8aa8d610354a2b576946a6c838251ec5988c8374100638e6b2604513b93159 >+SIZE (cabal/split-0.2.3.5/split-0.2.3.5.tar.gz) = 15746 >+SHA256 (cabal/splitmix-0.1.0.4/splitmix-0.1.0.4.tar.gz) = 6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa >+SIZE (cabal/splitmix-0.1.0.4/splitmix-0.1.0.4.tar.gz) = 22382 >+SHA256 (cabal/splitmix-0.1.0.4/revision/2.cabal) = db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e >+SIZE (cabal/splitmix-0.1.0.4/revision/2.cabal) = 6537 >+SHA256 (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 0180958a882eb0f6262b812fe886c2b1b8285474b5b958f814ae4f05409fbf79 >+SIZE (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 37959 >+SHA256 (cabal/strict-0.5/strict-0.5.tar.gz) = 3f4f0995dec2d520d0e321542f71412dac023658fdab603db04364d75269a0fd >+SIZE (cabal/strict-0.5/strict-0.5.tar.gz) = 12564 >+SHA256 (cabal/syb-0.7.2.3/syb-0.7.2.3.tar.gz) = d0b72daf16a947c4d9cb2d5774072f2153433224a04fd60fad60be9ffac8d91a >+SIZE (cabal/syb-0.7.2.3/syb-0.7.2.3.tar.gz) = 40018 >+SHA256 (cabal/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz) = 1656ce3c0d585650784ceb3f794748286e19fb635f557e7b29b0897f8956d993 >+SIZE (cabal/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz) = 16663 >+SHA256 (cabal/system-filepath-0.4.14/revision/1.cabal) = e8ce7d24d7008a825e5d03aa672950a0e8178ac54c3de7134f36c3a7e37694a2 >+SIZE (cabal/system-filepath-0.4.14/revision/1.cabal) = 1631 >+SHA256 (cabal/tagged-0.8.7/tagged-0.8.7.tar.gz) = 6414eeac27a1633f49e2f78199ced99ce8ce3d70b658cf6d55b1d81ff60cb961 >+SIZE (cabal/tagged-0.8.7/tagged-0.8.7.tar.gz) = 10082 >+SHA256 (cabal/tagsoup-0.14.8/tagsoup-0.14.8.tar.gz) = ba7e5500d853d29f0675b90655b7fdd032a4a7eee82a56e7ee3ef9949fe93ad5 >+SIZE (cabal/tagsoup-0.14.8/tagsoup-0.14.8.tar.gz) = 43894 >+SHA256 (cabal/temporary-1.3/temporary-1.3.tar.gz) = 8c442993694b5ffca823ce864af95bd2841fb5264ee511c61cf48cc71d879890 >+SIZE (cabal/temporary-1.3/temporary-1.3.tar.gz) = 5686 >+SHA256 (cabal/texmath-0.12.8/texmath-0.12.8.tar.gz) = 034ff00671d9b8ac4c983df59ccfb4f39fc7d8c2d19f1f39cc00ac5d3f8625c4 >+SIZE (cabal/texmath-0.12.8/texmath-0.12.8.tar.gz) = 1479868 >+SHA256 (cabal/text-conversions-0.3.1.1/text-conversions-0.3.1.1.tar.gz) = c8770fba789ce80334cae628285103c49abec0fa074773cbb5a88e26f5a7725d >+SIZE (cabal/text-conversions-0.3.1.1/text-conversions-0.3.1.1.tar.gz) = 5258 >+SHA256 (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = a35ec6cde2ada084c1a050dc5885be5ab01f851b93d744cf0facbc1c18002dda >+SIZE (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = 25113 >+SHA256 (cabal/text-short-0.1.5/revision/2.cabal) = c296eb2289dc5bf39912989c295cb82ef05ae5f84ee83ea5dc21f48da80e7052 >+SIZE (cabal/text-short-0.1.5/revision/2.cabal) = 3202 >+SHA256 (cabal/th-abstraction-0.5.0.0/th-abstraction-0.5.0.0.tar.gz) = 8258dc3ab7188af5826e2467032b52a931a3af4d8a93d4a094210e240a8a9964 >+SIZE (cabal/th-abstraction-0.5.0.0/th-abstraction-0.5.0.0.tar.gz) = 40093 >+SHA256 (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8 >+SIZE (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = 14838 >+SHA256 (cabal/th-compat-0.1.4/revision/2.cabal) = e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730 >+SIZE (cabal/th-compat-0.1.4/revision/2.cabal) = 3224 >+SHA256 (cabal/th-lift-0.8.3/th-lift-0.8.3.tar.gz) = 25d57bf5f8e7deefeb4ace0539805ae1e90b1ba5a034ebcc36141846408c6b75 >+SIZE (cabal/th-lift-0.8.3/th-lift-0.8.3.tar.gz) = 14643 >+SHA256 (cabal/th-lift-instances-0.1.20/th-lift-instances-0.1.20.tar.gz) = f533c3f95addcca461a0ccd1aafef75dd801bfa6599c0d1184d54bfffb61d870 >+SIZE (cabal/th-lift-instances-0.1.20/th-lift-instances-0.1.20.tar.gz) = 6721 >+SHA256 (cabal/these-1.2/these-1.2.tar.gz) = a8ed7174b7f790764360f48aab72fea382a6093ed369c7bc6881fae1abacd4b8 >+SIZE (cabal/these-1.2/these-1.2.tar.gz) = 10606 >+SHA256 (cabal/threads-0.5.1.7/threads-0.5.1.7.tar.gz) = e0f6fea09b99a2f84c98089c27c011077bf43f1e1977a5c43997e226d23142d0 >+SIZE (cabal/threads-0.5.1.7/threads-0.5.1.7.tar.gz) = 7459 >+SHA256 (cabal/threads-0.5.1.7/revision/1.cabal) = 97132b14f194d7ce0b15e25498545462a42ad1017b072641622653d4c1aabda3 >+SIZE (cabal/threads-0.5.1.7/revision/1.cabal) = 2877 >+SHA256 (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = ad07bb00eb9678c2136d3680752b00acc4cbc522654bb3199bf31c61ef1e6b80 >+SIZE (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = 59964 >+SHA256 (cabal/time-compat-1.9.6.1/revision/5.cabal) = dd4de1fa0d6b7108982efc7ac41938569e4c9b06230bb87d34aae007c52ddb67 >+SIZE (cabal/time-compat-1.9.6.1/revision/5.cabal) = 5062 >+SHA256 (cabal/time-locale-compat-0.1.1.5/time-locale-compat-0.1.1.5.tar.gz) = 07ff1566de7d851423a843b2de385442319348c621d4f779b3d365ce91ac502c >+SIZE (cabal/time-locale-compat-0.1.1.5/time-locale-compat-0.1.1.5.tar.gz) = 1956 >+SHA256 (cabal/tls-1.7.0/tls-1.7.0.tar.gz) = 3c2a50c902d26864f6af113e59045f049f6c54fb46239ed2d1d4a82bc8524078 >+SIZE (cabal/tls-1.7.0/tls-1.7.0.tar.gz) = 158630 >+SHA256 (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 323bf8689eb691b122661cffa41a25e00fea7a768433fe2dde35d3da7d32cf90 >+SIZE (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 2902 >+SHA256 (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = b62c7304c9f3cbc9463d0739aa85cb9489f217ea092b9d625d417514fbcc9d6a >+SIZE (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = 46485 >+SHA256 (cabal/typed-process-0.2.11.0/typed-process-0.2.11.0.tar.gz) = 948c59540675d85f35c99e285cdb8686713ec1689f530d5d21813239ea91f625 >+SIZE (cabal/typed-process-0.2.11.0/typed-process-0.2.11.0.tar.gz) = 18309 >+SHA256 (cabal/typst-0.1.0.0/typst-0.1.0.0.tar.gz) = a40a94476357580cd5197e1a2cd65bfdd29d8bad293667beca01741969a24eef >+SIZE (cabal/typst-0.1.0.0/typst-0.1.0.0.tar.gz) = 6402077 >+SHA256 (cabal/typst-symbols-0.1.2/typst-symbols-0.1.2.tar.gz) = c2e6c71e71cff33d464d6dc50276886d616626772d5f57260b2f668c4bcba0ab >+SIZE (cabal/typst-symbols-0.1.2/typst-symbols-0.1.2.tar.gz) = 18076 >+SHA256 (cabal/unicode-collation-0.1.3.4/unicode-collation-0.1.3.4.tar.gz) = b08dbe9bb269d6eda2639cdfc63caee136794f46c16a1ad51b5305dd2ea6d429 >+SIZE (cabal/unicode-collation-0.1.3.4/unicode-collation-0.1.3.4.tar.gz) = 2056084 >+SHA256 (cabal/unicode-data-0.4.0.1/unicode-data-0.4.0.1.tar.gz) = 37a5dea6801940beb65c4ac4b9d0f7e653a686cf773507f0ca61c210e0b06080 >+SIZE (cabal/unicode-data-0.4.0.1/unicode-data-0.4.0.1.tar.gz) = 187381 >+SHA256 (cabal/unicode-data-0.4.0.1/revision/1.cabal) = 081e269b48f2d8511579a6dd1aa5f5c2f940e63d9bafec5fb911c11e32b27ad3 >+SIZE (cabal/unicode-data-0.4.0.1/revision/1.cabal) = 5624 >+SHA256 (cabal/unicode-transforms-0.4.0.1/unicode-transforms-0.4.0.1.tar.gz) = 3278e1e1d648da4bcd7368658ae091a89080e88a2f44db9df5136711e99649fc >+SIZE (cabal/unicode-transforms-0.4.0.1/unicode-transforms-0.4.0.1.tar.gz) = 648836 >+SHA256 (cabal/unicode-transforms-0.4.0.1/revision/3.cabal) = adffd08a043cbf633e9574c35e206315bb07e73ed3886a91472d3cf208d8a6c3 >+SIZE (cabal/unicode-transforms-0.4.0.1/revision/3.cabal) = 5923 >+SHA256 (cabal/uniplate-1.6.13/uniplate-1.6.13.tar.gz) = e777c94628445556a71f135a42cf72d2cfbaccba5849cc42fbfec8b2182e3ad2 >+SIZE (cabal/uniplate-1.6.13/uniplate-1.6.13.tar.gz) = 29787 >+SHA256 (cabal/uniplate-1.6.13/revision/1.cabal) = c8b715570d0b4baa72512e677552dd3f98372a64bf9de000e779bd4162fd7be7 >+SIZE (cabal/uniplate-1.6.13/revision/1.cabal) = 3320 >+SHA256 (cabal/unix-time-0.4.10/unix-time-0.4.10.tar.gz) = 7e4a4bf8cba87bc7b1e3a1a7c68a44d7780360d6f52628cd84154829a03629bc >+SIZE (cabal/unix-time-0.4.10/unix-time-0.4.10.tar.gz) = 52393 >+SHA256 (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 99384cba8d56d9d61b85e38a313a93ebcdb78be6566367f0930ef580597fe3e3 >+SIZE (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 3865 >+SHA256 (cabal/unliftio-core-0.2.1.0/revision/2.cabal) = cb78a95718f9cb2579a8a1208d4a148ea358f0774321c8cb905bfb0b96a2813c >+SIZE (cabal/unliftio-core-0.2.1.0/revision/2.cabal) = 1004 >+SHA256 (cabal/unordered-containers-0.2.19.1/unordered-containers-0.2.19.1.tar.gz) = 1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2 >+SIZE (cabal/unordered-containers-0.2.19.1/unordered-containers-0.2.19.1.tar.gz) = 58030 >+SHA256 (cabal/unordered-containers-0.2.19.1/revision/2.cabal) = 9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00 >+SIZE (cabal/unordered-containers-0.2.19.1/revision/2.cabal) = 3822 >+SHA256 (cabal/uri-bytestring-0.3.3.1/uri-bytestring-0.3.3.1.tar.gz) = f3e7a0ac26111c426727fed11624efe9ce36ee2e74ca79570ec0985eb6111368 >+SIZE (cabal/uri-bytestring-0.3.3.1/uri-bytestring-0.3.3.1.tar.gz) = 23052 >+SHA256 (cabal/uri-bytestring-aeson-0.1.0.8/uri-bytestring-aeson-0.1.0.8.tar.gz) = 612accdae921dd7a5d00fedaa377d994be5ab585ae75b1f9f0dcaa10412e7509 >+SIZE (cabal/uri-bytestring-aeson-0.1.0.8/uri-bytestring-aeson-0.1.0.8.tar.gz) = 2047 >+SHA256 (cabal/url-2.1.3/url-2.1.3.tar.gz) = 5af27e3f8c0a27e52d0dcb98ef06a0fdd01efe8bb21242c29432e1bc380a4f61 >+SIZE (cabal/url-2.1.3/url-2.1.3.tar.gz) = 4180 >+SHA256 (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a >+SIZE (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = 10726 >+SHA256 (cabal/uuid-1.3.15/uuid-1.3.15.tar.gz) = f885958d8934930b7c0f9b91f980722f7f992c9383fc98f075cf9df64c800564 >+SIZE (cabal/uuid-1.3.15/uuid-1.3.15.tar.gz) = 8815 >+SHA256 (cabal/uuid-1.3.15/revision/2.cabal) = a3d79c5a5e58035e7dc5a08c5910c44a6719aaa38697b249e3f67aaac884411a >+SIZE (cabal/uuid-1.3.15/revision/2.cabal) = 2642 >+SHA256 (cabal/uuid-types-1.0.5/uuid-types-1.0.5.tar.gz) = ad68b89b7a64c07dd5c250a11be2033ee929318ff51ec7b4e4b54e1b4deba7dd >+SIZE (cabal/uuid-types-1.0.5/uuid-types-1.0.5.tar.gz) = 11922 >+SHA256 (cabal/uuid-types-1.0.5/revision/4.cabal) = e4662609522f093b86c5ae86aa9781afc69338cf102d42e5b5c196c320d95621 >+SIZE (cabal/uuid-types-1.0.5/revision/4.cabal) = 2636 >+SHA256 (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = c5d3167d15e12f52e00879ddf304a591672a74e369cc47bc5c7fa1d5a8d15b4f >+SIZE (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = 154509 >+SHA256 (cabal/vector-0.13.0.0/revision/3.cabal) = fa5cac81a17a5af388716792e8b99c24b3b66770086756d0d8b23f8272a0244c >+SIZE (cabal/vector-0.13.0.0/revision/3.cabal) = 9112 >+SHA256 (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 2ba7c0d3a8f26ef3ada24ff4abe81609225ecbab3b5754f048f8a0a3ecc33841 >+SIZE (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 29149 >+SHA256 (cabal/vector-algorithms-0.9.0.1/revision/2.cabal) = f3e5c6695529a94edf762117cafd91c989cb642ad3f8ca4014dbb13c8f6c2a20 >+SIZE (cabal/vector-algorithms-0.9.0.1/revision/2.cabal) = 3826 >+SHA256 (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = a888210f6467f155090653734be5cc920406a07227e0d3adb59096716fdb806c >+SIZE (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = 12377 >+SHA256 (cabal/vector-stream-0.1.0.0/revision/2.cabal) = f5d6d5291cd1b5f2f063403593f1f5c8127d692c888eedeb3e1eb40497a88dca >+SIZE (cabal/vector-stream-0.1.0.0/revision/2.cabal) = 1404 >+SHA256 (cabal/void-0.7.3/void-0.7.3.tar.gz) = 53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317 >+SIZE (cabal/void-0.7.3/void-0.7.3.tar.gz) = 6741 >+SHA256 (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 790d2bb274283419173bd89104439860675a9410f70f21912973ecd9098b4104 >+SIZE (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 11876 >+SHA256 (cabal/witherable-0.4.2/revision/4.cabal) = cec516b35df0ff53ab0068e70a912a0ba7b65c672fbc554727183faa195ad3b8 >+SIZE (cabal/witherable-0.4.2/revision/4.cabal) = 2342 >+SHA256 (cabal/xml-1.3.14/xml-1.3.14.tar.gz) = 32d1a1a9f21a59176d84697f96ae3a13a0198420e3e4f1c48abbab7d2425013d >+SIZE (cabal/xml-1.3.14/xml-1.3.14.tar.gz) = 12048 >+SHA256 (cabal/xml-1.3.14/revision/2.cabal) = c7a33d37c968c769723931a33e4e795f0aadda6cb62e7073ded8a2db52509d95 >+SIZE (cabal/xml-1.3.14/revision/2.cabal) = 952 >+SHA256 (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = d8e9169562c71c9e6bc616f15832f521a68c362aa4fc03682748a809755f1bf4 >+SIZE (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = 44653 >+SHA256 (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = dad5e4ce602b7d1f4be37c0cfd99a261a4573746bfd80d917dc955b72da84c80 >+SIZE (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = 4054 >+SHA256 (cabal/xss-sanitize-0.3.7.2/xss-sanitize-0.3.7.2.tar.gz) = 1bbb7f5be1f4590124c76458fb798bfd9bf8114dce338d5881ad89188a9dc946 >+SIZE (cabal/xss-sanitize-0.3.7.2/xss-sanitize-0.3.7.2.tar.gz) = 12002 >+SHA256 (cabal/yaml-0.11.11.2/yaml-0.11.11.2.tar.gz) = ee74923ee5b0fef74413c58aaa20ea59baf5d29d256a62fb47cc279570d9dc2f >+SIZE (cabal/yaml-0.11.11.2/yaml-0.11.11.2.tar.gz) = 31926 >+SHA256 (cabal/yaml-0.11.11.2/revision/2.cabal) = 6f0a1859e0fb3068e50dbc7fe9bf9a26847741bc24344e35e16a03711a18f88d >+SIZE (cabal/yaml-0.11.11.2/revision/2.cabal) = 5178 >+SHA256 (cabal/zip-archive-0.4.3/zip-archive-0.4.3.tar.gz) = 68050fa0f139848db0ea422ea9af1a65b652abf5168db7dafaf1bded5b045d05 >+SIZE (cabal/zip-archive-0.4.3/zip-archive-0.4.3.tar.gz) = 22161 >+SHA256 (cabal/zlib-0.6.3.0/zlib-0.6.3.0.tar.gz) = 9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da >+SIZE (cabal/zlib-0.6.3.0/zlib-0.6.3.0.tar.gz) = 369595 >+SHA256 (cabal/zlib-0.6.3.0/revision/1.cabal) = 9adce39e4ca0b7a87d45df0a243134816c57059a08e28cff5469c98ae1f54dfc >+SIZE (cabal/zlib-0.6.3.0/revision/1.cabal) = 5367 >diff --git a/www/hs-gitit/files/extra-patch-data_default.conf b/www/hs-gitit/files/extra-patch-data_default.conf >new file mode 100644 >index 000000000000..96e71c4b5458 >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-data_default.conf >@@ -0,0 +1,22 @@ >+--- data/default.conf.orig 2023-07-10 14:38:47 UTC >++++ data/default.conf >+@@ -266,10 +266,19 @@ feed-days: 14 >+ feed-refresh-time: 60 >+ # number of minutes to cache feeds before refreshing >+ >++exports: no >++# if yes, export options will be enabled. Beware, this might disclose >++# any file contents readable by the gitit process by maliciously >++# crafting pages that include files! >++ >+ pdf-export: no >+ # if yes, PDF will appear in export options. PDF will be created using >+ # pdflatex, which must be installed and in the path. Note that PDF >+ # exports create significant additional server load. >++ >++pdf-engine: pdflatex >++# change this to have pandoc use a different engine for PDF creation, >++# like xelatex, wkhtmltopdf, pdfroff, etc. >+ >+ pandoc-user-data: >+ # if a directory is specified, this will be searched for pandoc >diff --git a/www/hs-gitit/files/extra-patch-exports b/www/hs-gitit/files/extra-patch-exports >new file mode 100644 >index 000000000000..7b2cb45ac0c3 >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-exports >@@ -0,0 +1,612 @@ >+diff --git README.markdown README.markdown >+index d49e0cc..c5a4ada 100644 >+--- README.markdown >++++ README.markdown >+@@ -7,9 +7,10 @@ files are stored in a [git], [darcs], or [mercurial] repository >+ and may be modified either by using the VCS's command-line tools or >+ through the wiki's web interface. By default, pandoc's extended version >+ of markdown is used as a markup language, but reStructuredText, LaTeX, HTML, >+-DocBook, or Emacs Org-mode markup can also be used. Gitit can >+-be configured to display TeX math (using [texmath]) and >+-highlighted source code (using [highlighting-kate]). >++DocBook, or Emacs Org-mode markup can also be used. Pages can be exported in a >++number of different formats, including LaTeX, RTF, OpenOffice ODT, and >++MediaWiki markup. Gitit can be configured to display TeX math (using >++[texmath]) and highlighted source code (using [highlighting-kate]). >+ >+ Other features include >+ >+@@ -410,7 +411,7 @@ Caching >+ By default, gitit does not cache content. If your wiki receives a lot of >+ traffic or contains pages that are slow to render, you may want to activate >+ caching. To do this, set the configuration option `use-cache` to `yes`. >+-By default, rendered pages, and highlighted source files >++By default, rendered pages, highlighted source files, and exported PDFs >+ will be cached in the `cache` directory. (Another directory can be >+ specified by setting the `cache-dir` configuration option.) >+ >+diff --git data/default.conf data/default.conf >+index cd528f9..567bf8f 100644 >+--- data/default.conf >++++ data/default.conf >+@@ -266,9 +266,16 @@ feed-days: 14 >+ feed-refresh-time: 60 >+ # number of minutes to cache feeds before refreshing >+ >++pdf-export: no >++# if yes, PDF will appear in export options. PDF will be created using >++# pdflatex, which must be installed and in the path. Note that PDF >++# exports create significant additional server load. >++ >+ pandoc-user-data: >+ # if a directory is specified, this will be searched for pandoc >+-# customizations. If no directory is >++# customizations. These can include a templates/ directory for custom >++# templates for various export formats, an S5 directory for custom >++# S5 styles, and a reference.odt for ODT exports. If no directory is >+ # specified, $HOME/.pandoc will be searched. See pandoc's README for >+ # more information. >+ >+diff --git data/templates/pagetools.st data/templates/pagetools.st >+index a5178f4..2d01dfa 100644 >+--- data/templates/pagetools.st >++++ data/templates/pagetools.st >+@@ -9,5 +9,6 @@ >+ <li><a href="$base$/_feed$pageUrl$" type="application/atom+xml" rel="alternate" title="This page's ATOM Feed">Atom feed</a> <img alt="feed icon" src="$base$/img/icons/feed.png"/></li> >+ $endif$ >+ </ul> >++ $exportbox$ >+ </fieldset> >+ </div> >+diff --git gitit.cabal gitit.cabal >+index 3d0d695..361415d 100644 >+--- gitit.cabal >++++ gitit.cabal >+@@ -115,6 +115,7 @@ Library >+ Network.Gitit.Authentication.Github, >+ Network.Gitit.Util, Network.Gitit.Server >+ Network.Gitit.Cache, Network.Gitit.State, >++ Network.Gitit.Export, >+ Network.Gitit.Handlers, >+ Network.Gitit.Plugins, Network.Gitit.Rpxnow, >+ Network.Gitit.Page, Network.Gitit.Feed, >+diff --git src/Network/Gitit.hs src/Network/Gitit.hs >+index 3ad25f8..032cc9d 100644 >+--- src/Network/Gitit.hs >++++ src/Network/Gitit.hs >+@@ -199,6 +199,7 @@ wikiHandlers = >+ authenticate ForModify (unlessNoDelete deletePage showPage) ] >+ , dir "_preview" preview >+ , guardIndex >> indexPage >++ , guardCommand "export" >> exportPage >+ , method POST >> guardCommand "cancel" >> showPage >+ , method POST >> guardCommand "update" >> >+ authenticate ForModify (unlessNoEdit updatePage showPage) >+diff --git src/Network/Gitit/Cache.hs src/Network/Gitit/Cache.hs >+index 3334d07..91b6c0a 100644 >+--- src/Network/Gitit/Cache.hs >++++ src/Network/Gitit/Cache.hs >+@@ -41,13 +41,23 @@ import Control.Monad.Trans (liftIO) >+ import Text.Pandoc.UTF8 (encodePath) >+ >+ -- | Expire a cached file, identified by its filename in the filestore. >++-- If there is an associated exported PDF, expire it too. >+ -- Returns () after deleting a file from the cache, fails if no cached file. >+ expireCachedFile :: String -> GititServerPart () >+ expireCachedFile file = do >+ cfg <- getConfig >+ let target = encodePath $ cacheDir cfg </> file >+ exists <- liftIO $ doesFileExist target >+- when exists $ liftIO $ liftIO $ removeFile target >++ when exists $ liftIO $ do >++ liftIO $ removeFile target >++ expireCachedPDF target (defaultExtension cfg) >++ >++expireCachedPDF :: String -> String -> IO () >++expireCachedPDF file ext = >++ when (takeExtension file == "." ++ ext) $ do >++ let pdfname = file ++ ".export.pdf" >++ exists <- doesFileExist pdfname >++ when exists $ removeFile pdfname >+ >+ lookupCache :: String -> GititServerPart (Maybe (UTCTime, B.ByteString)) >+ lookupCache file = do >+@@ -74,3 +84,4 @@ cacheContents file contents = do >+ liftIO $ do >+ createDirectoryIfMissing True targetDir >+ B.writeFile target contents >++ expireCachedPDF target (defaultExtension cfg) >+diff --git src/Network/Gitit/Config.hs src/Network/Gitit/Config.hs >+index d39d8cf..1bfbc47 100644 >+--- src/Network/Gitit/Config.hs >++++ src/Network/Gitit/Config.hs >+@@ -130,6 +130,7 @@ extractConfig cp = do >+ cfWikiTitle <- get cp "DEFAULT" "wiki-title" >+ cfFeedDays <- get cp "DEFAULT" "feed-days" >+ cfFeedRefreshTime <- get cp "DEFAULT" "feed-refresh-time" >++ cfPDFExport <- get cp "DEFAULT" "pdf-export" >+ cfPandocUserData <- get cp "DEFAULT" "pandoc-user-data" >+ cfXssSanitize <- get cp "DEFAULT" "xss-sanitize" >+ cfRecentActivityDays <- get cp "DEFAULT" "recent-activity-days" >+@@ -231,6 +232,7 @@ extractConfig cp = do >+ , wikiTitle = cfWikiTitle >+ , feedDays = readNumber "feed-days" cfFeedDays >+ , feedRefreshTime = readNumber "feed-refresh-time" cfFeedRefreshTime >++ , pdfExport = cfPDFExport >+ , pandocUserData = if null cfPandocUserData >+ then Nothing >+ else Just cfPandocUserData >+diff --git src/Network/Gitit/ContentTransformer.hs src/Network/Gitit/ContentTransformer.hs >+index 12e450a..fa82604 100644 >+--- src/Network/Gitit/ContentTransformer.hs >++++ src/Network/Gitit/ContentTransformer.hs >+@@ -31,6 +31,7 @@ module Network.Gitit.ContentTransformer >+ , showRawPage >+ , showFileAsText >+ , showPage >++ , exportPage >+ , showHighlightedSource >+ , showFile >+ , preview >+@@ -44,6 +45,7 @@ module Network.Gitit.ContentTransformer >+ , textResponse >+ , mimeFileResponse >+ , mimeResponse >++ , exportPandoc >+ , applyWikiTemplate >+ -- * Content-type transformation combinators >+ , pageToWikiPandoc >+@@ -77,6 +79,7 @@ import Data.List (stripPrefix) >+ import Data.Maybe (isNothing, mapMaybe) >+ import Data.Semigroup ((<>)) >+ import Network.Gitit.Cache (lookupCache, cacheContents) >++import Network.Gitit.Export (exportFormats) >+ import Network.Gitit.Framework hiding (uriPath) >+ import Network.Gitit.Layout >+ import Network.Gitit.Page (stringToPage) >+@@ -183,6 +186,10 @@ showFileAsText = runFileTransformer rawTextResponse >+ showPage :: Handler >+ showPage = runPageTransformer htmlViaPandoc >+ >++-- | Responds with page exported into selected format. >++exportPage :: Handler >++exportPage = runPageTransformer exportViaPandoc >++ >+ -- | Responds with highlighted source code. >+ showHighlightedSource :: Handler >+ showHighlightedSource = runFileTransformer highlightRawSource >+@@ -213,6 +220,15 @@ applyPreCommitPlugins = runPageTransformer . applyPreCommitTransforms >+ rawTextResponse :: ContentTransformer Response >+ rawTextResponse = rawContents >>= textResponse >+ >++-- | Responds with a wiki page in the format specified >++-- by the @format@ parameter. >++exportViaPandoc :: ContentTransformer Response >++exportViaPandoc = rawContents >>= >++ maybe mzero return >>= >++ contentsToPage >>= >++ pageToWikiPandoc >>= >++ exportPandoc >++ >+ -- | Responds with a wiki page. Uses the cache when >+ -- possible and caches the rendered page when appropriate. >+ htmlViaPandoc :: ContentTransformer Response >+@@ -306,6 +322,17 @@ mimeResponse :: Monad m >+ mimeResponse c mimeType = >+ return . setContentType mimeType . toResponse $ c >+ >++-- | Converts Pandoc to response using format specified in parameters. >++exportPandoc :: Pandoc -> ContentTransformer Response >++exportPandoc doc = do >++ params <- getParams >++ page <- getPageName >++ cfg <- lift getConfig >++ let format = pFormat params >++ case lookup format (exportFormats cfg) of >++ Nothing -> error $ "Unknown export format: " ++ format >++ Just writer -> lift (writer page doc) >++ >+ -- | Adds the sidebar, page tabs, and other elements of the wiki page >+ -- layout to the raw content. >+ applyWikiTemplate :: Html -> ContentTransformer Response >+diff --git src/Network/Gitit/Export.hs src/Network/Gitit/Export.hs >+new file mode 100644 >+index 0000000..0842a8c >+--- /dev/null >++++ src/Network/Gitit/Export.hs >+@@ -0,0 +1,307 @@ >++{-# LANGUAGE OverloadedStrings #-} >++{-# LANGUAGE FlexibleContexts #-} >++{- >++Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu> >++ >++This program is free software; you can redistribute it and/or modify >++it under the terms of the GNU General Public License as published by >++the Free Software Foundation; either version 2 of the License, or >++(at your option) any later version. >++ >++This program is distributed in the hope that it will be useful, >++but WITHOUT ANY WARRANTY; without even the implied warranty of >++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >++GNU General Public License for more details. >++ >++You should have received a copy of the GNU General Public License >++along with this program; if not, write to the Free Software >++Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA >++-} >++ >++{- Functions for exporting wiki pages in various formats. >++-} >++ >++module Network.Gitit.Export ( exportFormats ) where >++import Control.Exception (throwIO) >++import Text.Pandoc hiding (HTMLMathMethod(..), getDataFileName) >++import qualified Text.Pandoc as Pandoc >++import Text.Pandoc.PDF (makePDF) >++import Text.Pandoc.SelfContained as SelfContained >++import qualified Text.Pandoc.UTF8 as UTF8 >++import qualified Data.Map as M >++import Network.Gitit.Server >++import Network.Gitit.Framework (pathForPage) >++import Network.Gitit.State (getConfig) >++import Network.Gitit.Types >++import Network.Gitit.Cache (cacheContents, lookupCache) >++import Text.DocTemplates as DT >++import Control.Monad.Trans (liftIO) >++import Control.Monad (unless) >++import Text.XHtml (noHtml) >++import qualified Data.ByteString as B >++import qualified Data.ByteString.Lazy as L >++import System.FilePath ((</>), takeDirectory) >++import System.Environment (setEnv) >++import System.Directory (doesFileExist) >++import Text.HTML.SanitizeXSS >++import Data.ByteString.Lazy (fromStrict) >++import Data.Text (Text) >++import qualified Data.Text as T >++import Data.Text.Encoding (encodeUtf8) >++import Data.List (isPrefixOf) >++import Skylighting (styleToCss, pygments) >++import System.IO.Temp (withSystemTempDirectory) >++import Paths_gitit (getDataFileName) >++ >++defaultRespOptions :: WriterOptions >++defaultRespOptions = def { writerHighlightStyle = Just pygments } >++ >++respondX :: String -> String -> String >++ -> (WriterOptions -> Pandoc -> PandocIO L.ByteString) >++ -> WriterOptions -> String -> Pandoc -> Handler >++respondX templ mimetype ext fn opts page doc = do >++ cfg <- getConfig >++ doc' <- if ext `elem` ["odt","pdf","beamer","epub","docx","rtf"] >++ then fixURLs page doc >++ else return doc >++ doc'' <- liftIO $ runIO $ do >++ setUserDataDir $ pandocUserData cfg >++ compiledTemplate <- compileDefaultTemplate (T.pack templ) >++ fn opts{ writerTemplate = Just compiledTemplate } doc' >++ either (liftIO . throwIO) >++ (ok . setContentType mimetype . >++ (if null ext then id else setFilename (page ++ "." ++ ext)) . >++ toResponseBS B.empty) >++ doc'' >++ >++respondS :: String -> String -> String -> (WriterOptions -> Pandoc -> PandocIO Text) >++ -> WriterOptions -> String -> Pandoc -> Handler >++respondS templ mimetype ext fn = >++ respondX templ mimetype ext (\o d -> fromStrict . encodeUtf8 <$> fn o d) >++ >++respondSlides :: String -> (WriterOptions -> Pandoc -> PandocIO Text) -> String -> Pandoc -> Handler >++respondSlides templ fn page doc = do >++ cfg <- getConfig >++ let math = case mathMethod cfg of >++ MathML -> Pandoc.MathML >++ WebTeX u -> Pandoc.WebTeX $ T.pack u >++ _ -> Pandoc.PlainMath >++ let opts' = defaultRespOptions { writerIncremental = True >++ , writerHTMLMathMethod = math} >++ -- We sanitize the body only, to protect against XSS attacks. >++ -- (Sanitizing the whole HTML page would strip out javascript >++ -- needed for the slides.) We then pass the body into the >++ -- slide template using the 'body' variable. >++ Pandoc meta blocks <- fixURLs page doc >++ docOrError <- liftIO $ runIO $ do >++ setUserDataDir $ pandocUserData cfg >++ body' <- writeHtml5String opts' (Pandoc meta blocks) -- just body >++ let body'' = T.unpack >++ $ (if xssSanitize cfg then sanitizeBalance else id) >++ $ body' >++ let setVariable key val (DT.Context ctx) = >++ DT.Context $ M.insert (T.pack key) (toVal (T.pack val)) ctx >++ variables' <- if mathMethod cfg == MathML >++ then do >++ s <- readDataFile "MathMLinHTML.js" >++ return $ setVariable "mathml-script" >++ (UTF8.toString s) mempty >++ else return mempty >++ compiledTemplate <- compileDefaultTemplate (T.pack templ) >++ dzcore <- if templ == "dzslides" >++ then do >++ dztempl <- readDataFile $ "dzslides" </> "template.html" >++ return $ unlines >++ $ dropWhile (not . isPrefixOf "<!-- {{{{ dzslides core") >++ $ lines $ UTF8.toString dztempl >++ else return "" >++ let opts'' = opts'{ >++ writerVariables = >++ setVariable "body" body'' $ >++ setVariable "dzslides-core" dzcore $ >++ setVariable "highlighting-css" pygmentsCss >++ $ variables' >++ ,writerTemplate = Just compiledTemplate } >++ h <- fn opts'' (Pandoc meta []) >++ makeSelfContained h >++ either (liftIO . throwIO) >++ (ok . setContentType "text/html;charset=UTF-8" . >++ (setFilename (page ++ ".html")) . >++ toResponseBS B.empty . L.fromStrict . UTF8.fromText) >++ docOrError >++ >++respondLaTeX :: String -> Pandoc -> Handler >++respondLaTeX = respondS "latex" "application/x-latex" "tex" >++ writeLaTeX defaultRespOptions >++ >++respondConTeXt :: String -> Pandoc -> Handler >++respondConTeXt = respondS "context" "application/x-context" "tex" >++ writeConTeXt defaultRespOptions >++ >++ >++respondRTF :: String -> Pandoc -> Handler >++respondRTF = respondX "rtf" "application/rtf" "rtf" >++ (\o d -> L.fromStrict . UTF8.fromText <$> writeRTF o d) defaultRespOptions >++ >++respondRST :: String -> Pandoc -> Handler >++respondRST = respondS "rst" "text/plain; charset=utf-8" "" >++ writeRST defaultRespOptions{writerReferenceLinks = True} >++ >++respondMarkdown :: String -> Pandoc -> Handler >++respondMarkdown = respondS "markdown" "text/plain; charset=utf-8" "" >++ writeMarkdown defaultRespOptions{writerReferenceLinks = True} >++ >++respondCommonMark :: String -> Pandoc -> Handler >++respondCommonMark = respondS "commonmark" "text/plain; charset=utf-8" "" >++ writeCommonMark defaultRespOptions{writerReferenceLinks = True} >++ >++respondPlain :: String -> Pandoc -> Handler >++respondPlain = respondS "plain" "text/plain; charset=utf-8" "" >++ writePlain defaultRespOptions >++ >++respondMan :: String -> Pandoc -> Handler >++respondMan = respondS "man" "text/plain; charset=utf-8" "" >++ writeMan defaultRespOptions >++ >++respondTexinfo :: String -> Pandoc -> Handler >++respondTexinfo = respondS "texinfo" "application/x-texinfo" "texi" >++ writeTexinfo defaultRespOptions >++ >++respondDocbook :: String -> Pandoc -> Handler >++respondDocbook = respondS "docbook" "application/docbook+xml" "xml" >++ writeDocbook5 defaultRespOptions >++ >++respondOrg :: String -> Pandoc -> Handler >++respondOrg = respondS "org" "text/plain; charset=utf-8" "" >++ writeOrg defaultRespOptions >++ >++respondICML :: String -> Pandoc -> Handler >++respondICML = respondX "icml" "application/xml; charset=utf-8" "" >++ (\o d -> L.fromStrict . UTF8.fromText <$> writeICML o d) >++ defaultRespOptions >++ >++respondTextile :: String -> Pandoc -> Handler >++respondTextile = respondS "textile" "text/plain; charset=utf-8" "" >++ writeTextile defaultRespOptions >++ >++respondAsciiDoc :: String -> Pandoc -> Handler >++respondAsciiDoc = respondS "asciidoc" "text/plain; charset=utf-8" "" >++ writeAsciiDoc defaultRespOptions >++ >++respondMediaWiki :: String -> Pandoc -> Handler >++respondMediaWiki = respondS "mediawiki" "text/plain; charset=utf-8" "" >++ writeMediaWiki defaultRespOptions >++ >++respondODT :: String -> Pandoc -> Handler >++respondODT = respondX "opendocument" "application/vnd.oasis.opendocument.text" >++ "odt" writeODT defaultRespOptions >++ >++respondEPUB :: String -> Pandoc -> Handler >++respondEPUB = respondX "html" "application/epub+zip" "epub" writeEPUB3 >++ defaultRespOptions >++ >++respondDocx :: String -> Pandoc -> Handler >++respondDocx = respondX "native" >++ "application/vnd.openxmlformats-officedocument.wordprocessingml.document" >++ "docx" writeDocx defaultRespOptions >++ >++respondPDF :: Bool -> String -> Pandoc -> Handler >++respondPDF useBeamer page old_pndc = fixURLs page old_pndc >>= \pndc -> do >++ cfg <- getConfig >++ unless (pdfExport cfg) $ error "PDF export disabled" >++ let cacheName = pathForPage page (defaultExtension cfg) ++ ".export.pdf" >++ cached <- if useCache cfg >++ then lookupCache cacheName >++ else return Nothing >++ pdf' <- case cached of >++ Just (_modtime, bs) -> return $ Right $ L.fromChunks [bs] >++ Nothing -> liftIO $ >++ withSystemTempDirectory "gitit" $ \tmpdir -> do >++ let toc = tableOfContents cfg >++ -- ensure that LaTeX \include commands can't include >++ -- files outside the working directory, e.g. /etc/passwd: >++ writeFile (tmpdir </> "texmf.cnf") >++ "openout_any = p\nopenin_any = p\n" >++ setEnv "TEXMFCNF" (tmpdir ++ ":") >++ res <- runIO $ do >++ setUserDataDir $ pandocUserData cfg >++ setInputFiles [baseUrl cfg] >++ let templ = if useBeamer then "beamer" else "latex" >++ compiledTemplate <- compileDefaultTemplate templ >++ makePDF "pdflatex" [] (if useBeamer then writeBeamer else writeLaTeX) >++ defaultRespOptions{ writerTemplate = Just compiledTemplate >++ , writerTableOfContents = toc } pndc >++ either (liftIO . throwIO) return res >++ >++ case pdf' of >++ Left logOutput' -> simpleErrorHandler ("PDF creation failed:\n" >++ ++ UTF8.toStringLazy logOutput') >++ Right pdfBS -> do >++ case cached of >++ Nothing -> >++ cacheContents cacheName $ B.concat . L.toChunks $ pdfBS >++ _ -> return () >++ ok $ setContentType "application/pdf" $ setFilename (page ++ ".pdf") $ >++ (toResponse noHtml) {rsBody = pdfBS} >++ >++-- | When we create a PDF or ODT from a Gitit page, we need to fix the URLs of any >++-- images on the page. Those URLs will often be relative to the staticDir, but the >++-- PDF or ODT processor only understands paths relative to the working directory. >++-- >++-- Because the working directory will not in general be the root of the gitit instance >++-- at the time the Pandoc is fed to e.g. pdflatex, this function replaces the URLs of >++-- images in the staticDir with their correct absolute file path. >++fixURLs :: String -> Pandoc -> GititServerPart Pandoc >++fixURLs page pndc = do >++ cfg <- getConfig >++ defaultStatic <- liftIO $ getDataFileName $ "data" </> "static" >++ >++ let static = staticDir cfg >++ let repoPath = repositoryPath cfg >++ >++ let go (Image attr ils (url, title)) = do >++ fixedURL <- fixURL $ T.unpack url >++ return $ Image attr ils (T.pack fixedURL, title) >++ go x = return x >++ >++ fixURL ('/':url) = resolve url >++ fixURL url = resolve $ takeDirectory page </> url >++ >++ resolve p = do >++ sp <- doesFileExist $ static </> p >++ dsp <- doesFileExist $ defaultStatic </> p >++ return (if sp then static </> p >++ else (if dsp then defaultStatic </> p >++ else repoPath </> p)) >++ liftIO $ bottomUpM go pndc >++ >++exportFormats :: Config -> [(String, String -> Pandoc -> Handler)] >++exportFormats cfg = if pdfExport cfg >++ then ("PDF", respondPDF False) : >++ ("Beamer", respondPDF True) : >++ rest >++ else rest >++ where rest = [ ("LaTeX", respondLaTeX) -- (description, writer) >++ , ("ConTeXt", respondConTeXt) >++ , ("Texinfo", respondTexinfo) >++ , ("reST", respondRST) >++ , ("Markdown", respondMarkdown) >++ , ("CommonMark",respondCommonMark) >++ , ("Plain text",respondPlain) >++ , ("MediaWiki", respondMediaWiki) >++ , ("Org-mode", respondOrg) >++ , ("ICML", respondICML) >++ , ("Textile", respondTextile) >++ , ("AsciiDoc", respondAsciiDoc) >++ , ("Man page", respondMan) >++ , ("DocBook", respondDocbook) >++ , ("DZSlides", respondSlides "dzslides" writeDZSlides) >++ , ("Slidy", respondSlides "slidy" writeSlidy) >++ , ("S5", respondSlides "s5" writeS5) >++ , ("EPUB", respondEPUB) >++ , ("ODT", respondODT) >++ , ("DOCX", respondDocx) >++ , ("RTF", respondRTF) ] >++ >++pygmentsCss :: String >++pygmentsCss = styleToCss pygments >+diff --git src/Network/Gitit/Handlers.hs src/Network/Gitit/Handlers.hs >+index 44b19fe..d9f894f 100644 >+--- src/Network/Gitit/Handlers.hs >++++ src/Network/Gitit/Handlers.hs >+@@ -42,6 +42,7 @@ module Network.Gitit.Handlers ( >+ , showPage >+ , showPageDiff >+ , showFileDiff >++ , exportPage >+ , updatePage >+ , editPage >+ , deletePage >+@@ -60,7 +61,7 @@ import Network.Gitit.Feed (filestoreToXmlFeed, FeedConfig(..)) >+ import Network.Gitit.Util (orIfNull) >+ import Network.Gitit.Cache (expireCachedFile, lookupCache, cacheContents) >+ import Network.Gitit.ContentTransformer (showRawPage, showFileAsText, showPage, >+- showHighlightedSource, preview, applyPreCommitPlugins) >++ exportPage, showHighlightedSource, preview, applyPreCommitPlugins) >+ import Network.Gitit.Page (readCategories) >+ import qualified Control.Exception as E >+ import System.FilePath >+diff --git src/Network/Gitit/Layout.hs src/Network/Gitit/Layout.hs >+index f835d42..fd307c7 100644 >+--- src/Network/Gitit/Layout.hs >++++ src/Network/Gitit/Layout.hs >+@@ -31,11 +31,12 @@ import Network.Gitit.Server >+ import Network.Gitit.Framework >+ import Network.Gitit.State >+ import Network.Gitit.Types >++import Network.Gitit.Export (exportFormats) >+ import Network.HTTP (urlEncodeVars) >+ import qualified Text.StringTemplate as T >+ import Text.XHtml hiding ( (</>), dir, method, password, rev ) >+ import Text.XHtml.Strict ( stringToHtmlString ) >+-import Data.Maybe (isNothing) >++import Data.Maybe (isNothing, isJust, fromJust) >+ >+ defaultPageLayout :: PageLayout >+ defaultPageLayout = PageLayout >+@@ -110,6 +111,8 @@ filledPageTemplate base' cfg layout htmlContents templ = >+ maybe id (T.setAttribute "markuphelp") (pgMarkupHelp layout) . >+ setBoolAttr "printable" (pgPrintable layout) . >+ maybe id (T.setAttribute "revision") rev . >++ T.setAttribute "exportbox" >++ (renderHtmlFragment $ exportBox base' cfg page rev) . >+ (if null (pgTabs layout) then id else T.setAttribute "tabs" >+ (renderHtmlFragment tabs)) . >+ (\f x xs -> if null xs then x else f xs) (T.setAttribute "messages") id (pgMessages layout) . >+@@ -119,6 +122,17 @@ filledPageTemplate base' cfg layout htmlContents templ = >+ templ >+ >+ >++exportBox :: String -> Config -> String -> Maybe String -> Html >++exportBox base' cfg page rev | not (isSourceCode page) = >++ gui (base' ++ urlForPage page) ! [identifier "exportbox"] << >++ ([ textfield "revision" ! [thestyle "display: none;", >++ value (fromJust rev)] | isJust rev ] ++ >++ [ select ! [name "format"] << >++ map ((\f -> option ! [value f] << f) . fst) (exportFormats cfg) >++ , primHtmlChar "nbsp" >++ , submit "export" "Export" ]) >++exportBox _ _ _ _ = noHtml >++ >+ -- auxiliary functions: >+ >+ linkForTab :: (Tab -> Html -> Html) -> String -> String -> Maybe String -> Tab -> Html >+diff --git src/Network/Gitit/Types.hs src/Network/Gitit/Types.hs >+index aa23ec1..8f037b9 100644 >+--- src/Network/Gitit/Types.hs >++++ src/Network/Gitit/Types.hs >+@@ -204,6 +204,8 @@ data Config = Config { >+ feedDays :: Integer, >+ -- | Number of minutes to cache feeds before refreshing >+ feedRefreshTime :: Integer, >++ -- | Allow PDF export? >++ pdfExport :: Bool, >+ -- | Directory to search for pandoc customizations >+ pandocUserData :: Maybe FilePath, >+ -- | Filter HTML through xss-sanitize >+@@ -465,7 +467,7 @@ instance FromData Command where >+ return $ case map fst pairs `intersect` commandList of >+ [] -> Command Nothing >+ (c:_) -> Command $ Just c >+- where commandList = ["update", "cancel"] >++ where commandList = ["update", "cancel", "export"] >+ >+ -- | State for a single wiki. >+ data WikiState = WikiState { >diff --git a/www/hs-gitit/files/extra-patch-src_Network_Gitit_Config.hs b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Config.hs >new file mode 100644 >index 000000000000..0e977d0e92cf >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Config.hs >@@ -0,0 +1,22 @@ >+--- src/Network/Gitit/Config.hs.orig 2023-07-10 14:38:47 UTC >++++ src/Network/Gitit/Config.hs >+@@ -130,7 +130,9 @@ extractConfig cp = do >+ cfWikiTitle <- get cp "DEFAULT" "wiki-title" >+ cfFeedDays <- get cp "DEFAULT" "feed-days" >+ cfFeedRefreshTime <- get cp "DEFAULT" "feed-refresh-time" >++ cfExports <- get cp "DEFAULT" "exports" >+ cfPDFExport <- get cp "DEFAULT" "pdf-export" >++ cfPDFEngine <- get cp "DEFAULT" "pdf-engine" >+ cfPandocUserData <- get cp "DEFAULT" "pandoc-user-data" >+ cfXssSanitize <- get cp "DEFAULT" "xss-sanitize" >+ cfRecentActivityDays <- get cp "DEFAULT" "recent-activity-days" >+@@ -232,7 +234,9 @@ extractConfig cp = do >+ , wikiTitle = cfWikiTitle >+ , feedDays = readNumber "feed-days" cfFeedDays >+ , feedRefreshTime = readNumber "feed-refresh-time" cfFeedRefreshTime >++ , exports = cfExports >+ , pdfExport = cfPDFExport >++ , pdfEngine = cfPDFEngine >+ , pandocUserData = if null cfPandocUserData >+ then Nothing >+ else Just cfPandocUserData >diff --git a/www/hs-gitit/files/extra-patch-src_Network_Gitit_Export.hs b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Export.hs >new file mode 100644 >index 000000000000..67bad2b51db6 >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Export.hs >@@ -0,0 +1,31 @@ >+--- src/Network/Gitit/Export.hs.orig 2023-07-10 14:38:47 UTC >++++ src/Network/Gitit/Export.hs >+@@ -61,6 +61,7 @@ respondX :: String -> String -> String >+ -> WriterOptions -> String -> Pandoc -> Handler >+ respondX templ mimetype ext fn opts page doc = do >+ cfg <- getConfig >++ unless (exports cfg) $ error "exports are disabled" >+ doc' <- if ext `elem` ["odt","pdf","beamer","epub","docx","rtf"] >+ then fixURLs page doc >+ else return doc >+@@ -169,7 +170,11 @@ respondTexinfo = respondS "texinfo" "application/x-tex >+ >+ respondDocbook :: String -> Pandoc -> Handler >+ respondDocbook = respondS "docbook" "application/docbook+xml" "xml" >++#if MIN_VERSION_pandoc(3,0,0) >++ writeDocBook5 defaultRespOptions >++#else >+ writeDocbook5 defaultRespOptions >++#endif >+ >+ respondOrg :: String -> Pandoc -> Handler >+ respondOrg = respondS "org" "text/plain; charset=utf-8" "" >+@@ -228,7 +233,7 @@ respondPDF useBeamer page old_pndc = fixURLs page old_ >+ setInputFiles [baseUrl cfg] >+ let templ = if useBeamer then "beamer" else "latex" >+ compiledTemplate <- compileDefaultTemplate templ >+- makePDF "pdflatex" [] (if useBeamer then writeBeamer else writeLaTeX) >++ makePDF (pdfEngine cfg) [] (if useBeamer then writeBeamer else writeLaTeX) >+ defaultRespOptions{ writerTemplate = Just compiledTemplate >+ , writerTableOfContents = toc } pndc >+ either (liftIO . throwIO) return res >diff --git a/www/hs-gitit/files/extra-patch-src_Network_Gitit_Layout.hs b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Layout.hs >new file mode 100644 >index 000000000000..f671c768b173 >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Layout.hs >@@ -0,0 +1,11 @@ >+--- src/Network/Gitit/Layout.hs.orig 2023-07-10 14:38:47 UTC >++++ src/Network/Gitit/Layout.hs >+@@ -123,7 +123,7 @@ filledPageTemplate base' cfg layout htmlContents templ >+ >+ >+ exportBox :: String -> Config -> String -> Maybe String -> Html >+-exportBox base' cfg page rev | not (isSourceCode page) = >++exportBox base' cfg page rev | exports cfg && not (isSourceCode page) = >+ gui (base' ++ urlForPage page) ! [identifier "exportbox"] << >+ ([ textfield "revision" ! [thestyle "display: none;", >+ value (fromJust rev)] | isJust rev ] ++ >diff --git a/www/hs-gitit/files/extra-patch-src_Network_Gitit_Types.hs b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Types.hs >new file mode 100644 >index 000000000000..c9e8f4624175 >--- /dev/null >+++ b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Types.hs >@@ -0,0 +1,15 @@ >+--- src/Network/Gitit/Types.hs.orig 2023-07-10 14:38:47 UTC >++++ src/Network/Gitit/Types.hs >+@@ -204,8 +204,12 @@ data Config = Config { >+ feedDays :: Integer, >+ -- | Number of minutes to cache feeds before refreshing >+ feedRefreshTime :: Integer, >++ -- | Allow exports? >++ exports :: Bool, >+ -- | Allow PDF export? >+ pdfExport :: Bool, >++ -- | Which PDF engine to use? >++ pdfEngine :: String, >+ -- | Directory to search for pandoc customizations >+ pandocUserData :: Maybe FilePath, >+ -- | Filter HTML through xss-sanitize >diff --git a/www/hs-gitit/files/gitit.in b/www/hs-gitit/files/gitit.in >new file mode 100755 >index 000000000000..6f984047406e >--- /dev/null >+++ b/www/hs-gitit/files/gitit.in >@@ -0,0 +1,236 @@ >+#!/bin/sh >+# >+# $FreeBSD$ >+# >+# PROVIDE: gitit >+# REQUIRE: LOGIN >+# KEYWORD: shutdown >+# >+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf >+# to enable this service: >+# >+# gitit_enable (bool): Set to NO by default. >+# Set it to YES to enable gitit. >+# gitit_cfg (str): Set this to the list of all gitit instance >+# names, if you want to run more than one. >+# If set, then the gitit_* variables are used as >+# defaults for the corresponding instance >+# specific variables gitit_<instance>_*. >+# gitit_chdir (path): Directory in which to start gitit. >+# gitit_dir (path): Directory in which to start gitit. When set and >+# when multiple gitit instances are used via >+# gitit_cfg, then their default gitit_..._chdir >+# is $gitit_dir/<instance>. >+# gitit_supervise (bool): >+# Whether daemon process should restart >+# gitit on exit. (Might cause looping restarts!) >+# gitit_runuser (user): User id that runs this gitit instance. >+# gitit_config (path): Config file (possibly relative to gitit_chdir). >+# gitit_port (number): TCP port number to listen for HTTP requests. >+# gitit_flags (str): Defaults to "+RTS -I0 -RTS". That avoids CPU >+# usage by ghc's idle garbage collector, but >+# only if the gitit port was built using >+# CONFIGURE_ARGS+= "--ghc-option=-rtsopts". >+# gitit_locale (str): UTF-8 required! >+# gitit_timezone (str): gitit 0.11.1 requires UTC >+# >+ >+. /etc/rc.subr >+ >+name=gitit >+desc="run gitit Wiki webserver process(es)" >+rcvar=gitit_enable >+ >+load_rc_config $name >+ >+: ${gitit_enable:=NO} >+: ${gitit_program=%%PREFIX%%/bin/gitit} >+: ${gitit_pidfile=/var/run/${name}.pid} >+: ${gitit_dir=/var/gitit} >+: ${gitit_supervise=NO} >+: ${gitit_runuser=gitit} >+: ${gitit_config=${name}.conf} >+: ${gitit_port=5001} >+: ${gitit_flags="+RTS -I0 -RTS"} >+: ${gitit_locale=en_US.UTF-8} >+: ${gitit_timezone=UTC} >+ >+start_cmd="gitit_start $*" >+stop_cmd="gitit_stop $*" >+restart_cmd="gitit_restart $*" >+status_cmd="gitit_status $*" >+cmd=$1 >+ >+gitit_setdefaults() >+{ >+ [ -n "${gitit_cfg}" ] || return >+ eval gitit_enable_default=\$${name}_enable >+ #eval gitit_chdir_default=\$${name}_chdir >+ eval gitit_supervise_default=\$${name}_supervise >+ eval gitit_runuser_default=\$${name}_runuser >+ eval gitit_config_default=\$${name}_config >+ eval gitit_port_default=\$${name}_port >+ eval gitit_flags_default=\$${name}_flags >+ eval gitit_locale_default=\$${name}_locale >+ eval gitit_timezone_default=\$${name}_timezone >+} >+ >+gitit_setinstancevars() >+{ >+ local instance gitit_supervise_instance gitit_config_instance gitit_runuser_instance gitit_port_instance gitit_flags_instance gitit_locale_instance gitit_timezone_instance >+ instance=$1 >+ eval gitit_enable_instance=\$${name}_${instance}_enable >+ [ -z "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_instance}" >+ [ -n "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_default}" >+ eval gitit_chdir=\$${name}_${instance}_chdir >+ [ -n "${gitit_chdir}" ] || [ -z "${gitit_dir} " ] || gitit_chdir="${gitit_dir}/${instance}" >+ eval gitit_supervise_instance=\$${name}_${instance}_supervise >+ [ -z "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_instance}" >+ [ -n "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_default}" >+ eval gitit_runuser_instance=\$${name}_${instance}_runuser >+ [ -z "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_instance}" >+ [ -n "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_default}" >+ eval gitit_config_instance=\$${name}_${instance}_config >+ [ -z "${gitit_config_instance}" ] || gitit_config="${gitit_config_instance}" >+ [ -n "${gitit_config_instance}" ] || gitit_config="${gitit_config_default}" >+ eval gitit_port_instance=\$${name}_${instance}_port >+ [ -z "${gitit_port_instance}" ] || gitit_port="${gitit_port_instance}" >+ [ -n "${gitit_port_instance}" ] || gitit_port="${gitit_port_default}" >+ eval gitit_flags_instance=\$${name}_${instance}_flags >+ [ -z "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_instance}" >+ [ -n "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_default}" >+ eval gitit_locale_instance=\$${name}_${instance}_locale >+ [ -z "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_instance}" >+ [ -n "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_default}" >+ eval gitit_timezone_instance=\$${name}_${instance}_timezone >+ [ -z "${gitit_timezone_instance}" ] || gitit_timezone="${gitit_timezone_instance}" >+ >+ gitit_pidfile=/var/run/${name}-${instance}.pid >+ pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-${instance}-daemon.pid ; else echo ${gitit_pidfile} ; fi` >+} >+ >+gitit_runonecmd() >+{ >+ local real_gitit_program >+ command_args= >+ [ -z "$gitit_config" ] || command_args="$command_args -f $gitit_config" >+ [ -z "$gitit_port" ] || command_args="$command_args -p $gitit_port" >+ [ -z "$gitit_flags" ] || command_args="$command_args $gitit_flags" >+ [ -z "$gitit_locale" ] || export LANG=$gitit_locale >+ [ -z "$gitit_locale" ] || export LC_ALL=$gitit_locale >+ [ -z "$gitit_timezone" ] || export TZ=$gitit_timezone >+ daemonflags= >+ if checkyesno gitit_supervise >+ then >+ daemonflags="-r -P $pidfile " >+ fi >+ daemonflags="$daemonflags-p $gitit_pidfile" >+ >+ command=/usr/sbin/daemon >+ command_args="-f $daemonflags -u $gitit_runuser $gitit_program $command_args" >+ real_gitit_program=${gitit_program} >+ gitit_program=${command} >+ gitit_flags= >+ rc_flags= >+ >+ run_rc_command "${cmd}" >+ >+ case ${cmd} in >+ *start) >+ # make pidfile readable for $gitit_runuser >+ chgrp $gitit_runuser $gitit_pidfile && \ >+ chmod 640 $gitit_pidfile >+ ;; >+ esac >+ >+ gitit_program=${real_gitit_program} >+ unset LANG LC_ALL >+} >+ >+gitit_cmd() >+{ >+ local instance prefixchar runinstances i argi >+ if [ -z "${gitit_cfg}" ] >+ then >+ gitit_pidfile=/var/run/${name}.pid >+ pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-daemon.pid ; else echo ${gitit_pidfile} ; fi` >+ gitit_runonecmd >+ else >+ case $cmd in >+ *restart) >+ prefixchar="-+" >+ ;; >+ *start) >+ prefixchar="+" >+ ;; >+ *stop) >+ prefixchar="-" >+ ;; >+ *status) >+ prefixchar="?" >+ ;; >+ esac >+ # rc_extra_args is always empty at this point, so we >+ # extract additional parameters from $*. Positional >+ # parameters have to be passed down to this function. >+ runinstances= >+ i=2 >+ if [ $# -ge 2 ] >+ then >+ while [ $i -le $# ] >+ do >+ eval argi=\$$i >+ if echo "${gitit_cfg}" | grep -q -w "${argi}" >+ then >+ runinstances="${runinstances} ${argi}" >+ else >+ echo "Skipping ${argi}"' - not in ${gitit_cfg}.' >+ fi >+ i=$(($i + 1)) >+ done >+ else >+ runinstances=${gitit_cfg} >+ fi >+ for instance in ${runinstances} >+ do >+ echo -n "${prefixchar}${instance}: " >+ gitit_setinstancevars ${instance} >+ gitit_runonecmd >+ done >+ fi >+} >+ >+gitit_start() >+{ >+ unset start_cmd >+ gitit_setdefaults >+ gitit_cmd $* >+} >+ >+gitit_stop() >+{ >+ unset stop_cmd >+ gitit_setdefaults >+ gitit_cmd $* >+} >+ >+gitit_restart() >+{ >+ unset restart_cmd >+ unset stop_cmd >+ unset start_cmd >+ gitit_setdefaults >+ cmd=stop >+ gitit_cmd $* >+ cmd=start >+ gitit_cmd $* >+} >+ >+gitit_status() >+{ >+ unset status_cmd >+ gitit_setdefaults >+ gitit_cmd $* >+} >+ >+run_rc_command "$1" >diff --git a/www/hs-gitit/files/patch-__cabal__deps_filestore-0.6.5_Data_FileStore_Darcs.hs b/www/hs-gitit/files/patch-__cabal__deps_filestore-0.6.5_Data_FileStore_Darcs.hs >new file mode 100644 >index 000000000000..47b58eba3d5d >--- /dev/null >+++ b/www/hs-gitit/files/patch-__cabal__deps_filestore-0.6.5_Data_FileStore_Darcs.hs >@@ -0,0 +1,22 @@ >+--- _cabal_deps/filestore-0.6.5/Data/FileStore/Darcs.hs.orig 2001-09-09 01:46:40 UTC >++++ _cabal_deps/filestore-0.6.5/Data/FileStore/Darcs.hs >+@@ -205,7 +205,7 @@ getNames = map (drop 2) . lines . toString >+ -- | Get a list of all known files inside and managed by a repository. >+ darcsIndex :: FilePath ->IO [FilePath] >+ darcsIndex repo = withVerifyDir repo $ do >+- (status, _errOutput, output) <- runDarcsCommand repo "query" ["files","--no-directories"] >++ (status, _errOutput, output) <- runDarcsCommand repo "show" ["files","--no-directories"] >+ if status == ExitSuccess >+ then return . getNames $ output >+ else return [] -- return empty list if invalid path (see gitIndex) >+@@ -214,8 +214,8 @@ darcsIndex repo = withVerifyDir repo $ do >+ darcsDirectory :: FilePath -> FilePath -> IO [Resource] >+ darcsDirectory repo dir = withVerifyDir (repo </> dir) $ do >+ let dir' = if null dir then "" else addTrailingPathSeparator dir >+- (status1, _errOutput1, output1) <- runDarcsCommand repo "query" ["files","--no-directories"] >+- (status2, _errOutput2, output2) <- runDarcsCommand repo "query" ["files","--no-files"] >++ (status1, _errOutput1, output1) <- runDarcsCommand repo "show" ["files","--no-directories"] >++ (status2, _errOutput2, output2) <- runDarcsCommand repo "show" ["files","--no-files"] >+ if status1 == ExitSuccess && status2 == ExitSuccess >+ then do >+ let files = adhocParsing dir' . lines . toString $ output1 >diff --git a/www/hs-gitit/files/patch-__cabal__deps_pandoc-3.1.4_pandoc.cabal b/www/hs-gitit/files/patch-__cabal__deps_pandoc-3.1.4_pandoc.cabal >new file mode 100644 >index 000000000000..48d02aa85116 >--- /dev/null >+++ b/www/hs-gitit/files/patch-__cabal__deps_pandoc-3.1.4_pandoc.cabal >@@ -0,0 +1,11 @@ >+--- _cabal_deps/pandoc-3.1.4/pandoc.cabal.orig 2001-09-09 01:46:40 UTC >++++ _cabal_deps/pandoc-3.1.4/pandoc.cabal >+@@ -415,7 +415,7 @@ source-repository head >+ >+ flag embed_data_files >+ Description: Embed data files in binary for relocatable executable. >+- Default: False >++ Default: True >+ >+ common common-options >+ default-language: Haskell2010 >diff --git a/www/hs-gitit/files/patch-data_markup.DocBook b/www/hs-gitit/files/patch-data_markup.DocBook >new file mode 100644 >index 000000000000..823421ff0e3b >--- /dev/null >+++ b/www/hs-gitit/files/patch-data_markup.DocBook >@@ -0,0 +1,748 @@ >+--- data/markup.DocBook.orig 2001-09-09 01:46:40 UTC >++++ data/markup.DocBook >+@@ -1,347 +1,411 @@ >+-<sect1 id="markdown"> >+- <title>Markdown</title> >++# Markdown >++ >++The usual way to write pages for this wiki is [pandoc]'s extended form >++of [markdown]. You can start using markdown and later switch to >++DocBook by using `pandoc` to convert your markdown page to DocBook for >++more sophisticated formatting. To do so use the wiki's export option >++(if enabled) or `pandoc -f markdown -t docbook -o page.xml page.md`. >++Further down on this page there is some information about the DocBook >++format. Here we continue with an introduction to markdown. >++If you're not familiar with markdown, you should start by looking >++at the [markdown "basics" page] and the [markdown syntax description]. >++Consult the [pandoc User's Guide] for information about pandoc's syntax >++for footnotes, tables, description lists, and other elements not present >++in standard markdown. >++ >++[pandoc]: http://pandoc.org >++[pandoc User's Guide]: http://pandoc.org/README.html >++[markdown]: http://daringfireball.net/projects/markdown >++[markdown "basics" page]: http://daringfireball.net/projects/markdown/basics >++[markdown syntax description]: http://daringfireball.net/projects/markdown/syntax >++ >++Markdown is pretty intuitive, since it is based on email conventions. >++Here are some examples to get you started: >++ >+++--------------------------------------------------------+------------------------------------------------------------+ >++| Markdown code | Result | >+++========================================================+============================================================+ >++| `*emphasized text*` | *emphasized text* | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `**strong emphasis**` | **strong emphasis** | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `` `literal text` `` | `literal text` | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `\*escaped special characters\*` | \*escaped special characters\* | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `[external link](http://google.com)` | [external link](http://google.com) | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `![folder](/img/icons/folder.png)` | ![folder](/img/icons/folder.png) | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| Wikilink: `[Front Page]()` | Wikilink: [Front Page]() | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `H~2~O` | H~2~O | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `10^100^` | 10^100^ | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `~~strikeout~~` | ~~strikeout~~ | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$` | $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$[^1] | >++| | | >++| | [^1]: If this looks like code, it\'s because MathJax is | >++| | not installed on your system. Contact your administrator | >++| | to request it. | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `A simple footnote.^[Or is it so simple?]` | A simple footnote.^[Or is it so simple?] | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| \> an indented paragraph\ \ | > an indented paragraph, usually used for quotations | >++| \> usually used for quotations | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| #!/bin/sh -e | #!/bin/sh -e | >++| # code, indented four spaces | # code, indented four spaces | >++| echo "Hello world" | echo "Hello world" | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| * a bulleted list | - a bulleted list | >++| * second item | - second item | >++| - sublist | - sublist | >++| - and more | - and more | >++| * back to main list | - back to main list | >++| 1. this item has an ordered | 1. this item has an ordered | >++| 2. sublist | 2. sublist | >++| a) you can also use letters | a. you can also use letters | >++| b) another item | b. another item | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| Fruit Quantity | Fruit Quantity | >++| ------- --------- | ------- ---------- | >++| apples 30,200 | apples 30,200 | >++| oranges 1,998 | oranges 1,998 | >++| pears 42 | pears 42 | >++| | | >++| Table: Our fruit inventory | : Our fruit inventory | >+++--------------------------------------------------------+------------------------------------------------------------+ >++ >++## Headings >++ >++For headings, prefix a line with one or more `#` signs: one for a major heading, >++two for a subheading, three for a subsubheading. Be sure to leave space before >++and after the heading. >++ >++ # Markdown >++ >++ Text... >++ >++ ## Some examples... >++ >++ Text... >++ >++## Wiki links >++ >++Links to other wiki pages are formed this way: `[Page Name]()`. >++(Gitit converts markdown links with empty targets into wikilinks.) >++ >++To link to a wiki page using something else as the link text: >++`[something else](Page Name)`. >++ >++Note that page names may contain spaces and some special characters. >++They need not be CamelCase. CamelCase words are *not* automatically >++converted to wiki links. >++ >++Wiki pages may be organized into directories. So, if you have >++several pages on wine, you may wish to organize them like so: >++ >++ Wine/Pinot Noir >++ Wine/Burgundy >++ Wine/Cabernet Sauvignon >++ >++Note that a wiki link `[Burgundy]()` that occurs inside the `Wine` >++directory will link to `Wine/Burgundy`, and not to `Burgundy`. >++To link to a top-level page called `Burgundy`, you'd have to use >++`[Burgundy](/Burgundy)`. >++ >++To link to a directory listing for a subdirectory, use a trailing >++slash: `[Wine/]()` will link to a listing of the `Wine` subdirectory. >++ >++# DocBook >++ >++As DocBook is an XML format, opening and closing tags must match >++(`<tag>...</tag>`). >++ >+++--------------------------------------------------------+------------------------------------------------------------+ >++| DocBook code | Result | >+++========================================================+============================================================+ >++| `<emphasis>emphasized text</emphasis>` | *emphasized text* | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `<emphasis role="strong">strong emphasis</emphasis>` | **strong emphasis** | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `<literal>literal text</literal>` | `literal text` | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| XML character entities: `< > "` | `< > "` | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `<ulink url="https://en.wikipedia.org/wiki/DocBook"> | [external link](https://en.wikipedia.org/wikiDocBook) | >++| external link</ulink>` | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| Inserting an image: | ![folder](/img/icons/folder.png) | >++| | | >++| <inlinemediaobject> | | >++| <alt>folder</alt> | | >++| <imageobject> | | >++| <imagedata fileref="/img/icons/folder.png" /> | | >++| </imageobject> | | >++| </inlinemediaobject> | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| Wikilink: `<ulink url="Front Page">Front Page</ulink>` | Wikilink: [Front Page]() | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `H<subscript>2</subscript>O` | H~2~O | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `10<superscript>100</superscript>` | 10^100^ | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `<emphasis role="strikethrough">strikeout</emphasis>` | ~~strikeout~~ | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$` | $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$[^1] | >++| | | >++| | (Use pandoc's `--mathml` option to convert TeX math code.) | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `A simple footnote.<footnote>Or | A simple footnote.^[Or is it so simple?] | >++| is it so simple?</footnote>` | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| `<blockquote>an indented paragraph, usually used | > an indented paragraph, usually used for quotations | >++| for quotations</blockquote>` | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| <programlisting> | #!/bin/sh -e | >++| #!/bin/sh -e` | echo "Hello world" | >++| echo "Hello world" | | >++| </programlisting> | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| <itemizedlist spacing="compact"> | - a bulleted list | >++| <listitem> | - second item | >++| <simpara>a bulleted list</simpara> | - sublist | >++| </listitem> | - and more | >++| <listitem> | - back to main list | >++| <simpara>second item</simpara> | 1. this item has an ordered | >++| <itemizedlist spacing="compact"> | 2. sublist | >++| <listitem> | a. you can also use letters | >++| <simpara>sublist</simpara> | b. another item | >++| </listitem> | | >++| <listitem> | | >++| <simpara>and more</simpara> | | >++| </listitem> | | >++| </itemizedlist> | | >++| </listitem> | | >++| <listitem> | | >++| <simpara>back to main list</simpara> | | >++| <orderedlist spacing="compact"> | | >++| <listitem> | | >++| <simpara>this item has an ordered</simpara> | | >++| </listitem> | | >++| <listitem> | | >++| <simpara>sublist</simpara> | | >++| <orderedlist spacing="compact" | | >++| numeration="loweralpha"> | | >++| <listitem> | | >++| <simpara>you can also use letters</simpara> | | >++| </listitem> | | >++| <listitem> | | >++| <simpara>another item</simpara> | | >++| </listitem> | | >++| </orderedlist> | | >++| </listitem> | | >++| </orderedlist> | | >++| </listitem> | | >++| </itemizedlist> | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++| <table> | Fruit Quantity | >++| <title>Our fruit inventory</title> | ------- ---------- | >++| <tgroup cols="2"> | apples 30,200 | >++| <colspec align="left" /> | oranges 1,998 | >++| <colspec align="right" /> | pears 42 | >++| <thead> | | >++| <row> | : Our fruit inventory | >++| <entry>Fruit</entry> | | >++| <entry>Quantity</entry> | | >++| </row> | | >++| </thead> | | >++| <tbody> | | >++| <row> | | >++| <entry>apples</entry> | | >++| <entry>30,200</entry> | | >++| </row> | | >++| <row> | | >++| <entry>oranges</entry> | | >++| <entry>1,998</entry> | | >++| </row> | | >++| <row> | | >++| <entry>pears</entry> | | >++| <entry>42</entry> | | >++| </row> | | >++| </tbody> | | >++| </tgroup> | | >++| </table> | | >+++--------------------------------------------------------+------------------------------------------------------------+ >++ >++## Headings >++ >++A heading is given as the `<title>` element of a `<section>`: >++ >++<pre> >++<section> >++ <title>Heading</title> >++ <simpara>This is a top level section.</simpara> >++ <section> >++ <title>Subheading</title> >++ <simpara>This is a second level section.</simpara> >++ </section> >++</section> >++</pre> >++ >++## Wiki links >++ >++Links to other wiki pages are formed this way: >++`<ulink url="Page Name">Page Name</ulink>` >++ >++To link to a wiki page using something else as the link text: >++`<ulink url="Page Name">something else</ulink>`. >++ >++Note that page names may contain spaces and some special characters. >++They need not be CamelCase. CamelCase words are *not* automatically >++converted to wiki links. >++ >++Wiki pages may be organized into directories. So, if you have >++several pages on wine, you may wish to organize them like so: >++ >++ Wine/Pinot Noir >++ Wine/Burgundy >++ Wine/Cabernet Sauvignon >++ >++Note that a wiki link `<ulink url="Burgundy">Burgundy</ulink>` >++that occurs inside the `Wine` directory will link to `Wine/Burgundy`, >++and not to `Burgundy`. To link to a top-level page called `Burgundy`, >++you'd have to use `<ulink url="/Burgundy">Burgundy</ulink>`. >++ >++To link to a directory listing for a subdirectory, use a trailing >++slash: `<ulink url="Wine/">Wine</ulink>` will link to a listing of >++the `Wine` subdirectory. >++ >++## Reference material >++ >++Further reading: [DocBook 5: The Definitive Guide], which includes the >++[List of DocBook elements]. >++ >++[DocBook 5: The Definitive Guide]: https://tdg.docbook.org/tdg/5.0/docbook.html >++[List of DocBook elements]: https://tdg.docbook.org/tdg/5.0/chunk-part-d64e8789.html >++ >++## A sample document >++ >++You might want to use the following document as a resource of DocBook >++snippets (copy/paste). >++ >++~~~~~~~~ >++ >++<section id="docbook"> >++ <title>Using DocBook</title> >++ <simpara> >++ As DocBook is an XML format, opening and closing tags >++ must match (<tag>...</tag>). >++ </simpara> >++ <section id="inline"> >++ <title>Text Formatting</title> >++ <simpara> >++ A simple paragraph. >++ </simpara> >+ <para> >+- This wiki's pages are written in >+- <ulink url="http://pandoc.org">pandoc</ulink>'s >+- extended form of >+- <ulink url="http://daringfireball.net/projects/markdown">markdown</ulink>. >+- If you're not familiar with markdown, you should start by looking at >+- the >+- <ulink url="http://daringfireball.net/projects/markdown/basics">markdown >+- "basics" page</ulink> and the >+- <ulink url="http://daringfireball.net/projects/markdown/syntax">markdown >+- syntax description</ulink>. Consult the >+- <ulink url="http://pandoc.org/README.html">pandoc >+- User's Guide</ulink> for information about pandoc's syntax for >+- footnotes, tables, description lists, and other elements not present >+- in standard markdown. >++ A complex paragraph may contain blocks. >+ </para> >+- <para> >+- Markdown is pretty intuitive, since it is based on email >+- conventions. Here are some examples to get you started: >+- </para> >+- <table> >+- <tr> >+- <td> >+- <literal>*emphasized text*</literal> >+- </td> >+- <td> >+- <emphasis>emphasized text</emphasis> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>**strong emphasis**</literal> >+- </td> >+- <td> >+- <emphasis role="strong">strong emphasis</emphasis> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>`literal text`</literal> >+- </td> >+- <td> >+- <literal>literal text</literal> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>\*escaped special characters\*</literal> >+- </td> >+- <td> >+- *escaped special characters* >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>[external link](http://google.com)</literal> >+- </td> >+- <td> >+- <ulink url="http://google.com">external link</ulink> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>![folder](/img/icons/folder.png)</literal> >+- </td> >+- <td> >+- <inlinemediaobject> >++ <simpara> >++ italics: <emphasis>italics</emphasis>, >++ bold: <emphasis role="strong">bold</emphasis>, >++ strikeout: <emphasis role="strikethrough">strikeout</emphasis>, >++ inline code snippets: <literal>inline code</literal>. >++ </simpara> >++ <simpara> >++ Links: >++ <ulink url="http://foo.bar/baz">external</ulink>, >++ <ulink url="Pagename">internal Wiki Link</ulink>. >++ </simpara> >++ <simpara> >++ Inserting an image: >++ <inlinemediaobject> >+ <imageobject> >+- <imagedata fileref="/img/icons/folder.png" /> >++ <imagedata fileref="/img/icons/folder.png" /> >+ </imageobject> >+- </inlinemediaobject> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- Wikilink: <literal>[Front Page]()</literal> >+- </td> >+- <td> >+- Wikilink: <ulink url="">Front Page</ulink> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>H~2~O</literal> >+- </td> >+- <td> >+- H<subscript>2</subscript>O >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>10^100^</literal> >+- </td> >+- <td> >+- 10<superscript>100</superscript> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>~~strikeout~~</literal> >+- </td> >+- <td> >+- <emphasis role="strikethrough">strikeout</emphasis> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$</literal> >+- </td> >+- <td> >+- $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$<footnote> >+- <para> >+- If this looks like code, it's because MathJax is not installed on >+- your system. Contact your administrator to request it. >+- </para> >+- </footnote> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <literal>A simple footnote.^[Or is it so simple?]</literal> >+- </td> >+- <td> >+- A simple footnote.<footnote> >+- <para> >+- Or is it so simple? >+- </para> >+- </footnote> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <pre> >+- > an indented paragraph, >+- > usually used for quotations >+- </pre> >+- </td> >+- <td> >+- <blockquote> >+- <para> >+- an indented paragraph, usually used for quotations >+- </para> >+- </blockquote> >+- </td> >+- <tr> >+- <td> >+- <pre> >+- #!/bin/sh -e >+- # code, indented four spaces >+- echo "Hello world" >+- </pre> >+- </td> >+- <td> >+- <programlisting> >++ </inlinemediaobject> >++ </simpara> >++ </section> >++ <section id="blocks"> >++ <title>Text Blocks</title> >++ <para> >++ Quotation: >++ <blockquote> >++ <simpara> >++ A quotation set off from the main text. >++ </simpara> >++ </blockquote> >++ </para> >++ <para> >++ Code listing: >++ <programlisting> >+ #!/bin/sh -e >+-# code, indented four spaces >+ echo "Hello world" >+-</programlisting> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <pre> >+- * a bulleted list >+- * second item >+- - sublist >+- - and more >+- * back to main list >+- 1. this item has an ordered >+- 2. sublist >+- a) you can also use letters >+- b) another item >+- </pre> >+- </td> >+- <td> >+- <itemizedlist spacing="compact"> >++ </programlisting> >++ </para> >++ </section> >++ <section id="lists"> >++ <title>Lists</title> >++ <para> >++ Simple list: >++ <itemizedlist spacing="compact"> >+ <listitem> >+- <para> >+- a bulleted list >+- </para> >++ <simpara> >++ first >++ </simpara> >+ </listitem> >+ <listitem> >+- <para> >+- second item >+- </para> >+- <itemizedlist spacing="compact"> >+- <listitem> >+- <para> >+- sublist >+- </para> >+- </listitem> >+- <listitem> >+- <para> >+- and more >+- </para> >+- </listitem> >+- </itemizedlist> >+- </listitem> >++ <simpara> >++ second >++ </simpara> >++ </listitem> >++ </itemizedlist> >++ Numbered list: >++ <orderedlist spacing="compact"> >+ <listitem> >+- <para> >+- back to main list >+- </para> >+- <orderedlist numeration="arabic" spacing="compact"> >+- <listitem> >+- <para> >+- this item has an ordered >+- </para> >+- </listitem> >+- <listitem> >+- <para> >+- sublist >+- </para> >+- <orderedlist numeration="loweralpha" spacing="compact"> >+- <listitem> >+- <para> >+- you can also use letters >+- </para> >+- </listitem> >+- <listitem> >+- <para> >+- another item >+- </para> >+- </listitem> >+- </orderedlist> >+- </listitem> >+- </orderedlist> >++ <simpara> >++ first >++ </simpara> >+ </listitem> >+- </itemizedlist> >+- </td> >+- </tr> >+- <tr> >+- <td> >+- <pre> >+- Fruit Quantity >+- -------- ----------- >+- apples 30,200 >+- oranges 1,998 >+- pears 42 >+- >+- Table: Our fruit inventory >+- </pre> >+- </td> >+- <td> >+- <table> >+- <title> >+- Our fruit inventory >+- </title> >+- <tgroup cols="2"> >+- <colspec align="left" /> >+- <colspec align="right" /> >+- <thead> >+- <row> >+- <entry> >+- Fruit >+- </entry> >+- <entry> >+- Quantity >+- </entry> >+- </row> >+- </thead> >+- <tbody> >+- <row> >+- <entry> >+- apples >+- </entry> >+- <entry> >+- 30,200 >+- </entry> >+- </row> >+- <row> >+- <entry> >+- oranges >+- </entry> >+- <entry> >+- 1,998 >+- </entry> >+- </row> >+- <row> >+- <entry> >+- pears >+- </entry> >+- <entry> >+- 42 >+- </entry> >+- </row> >+- </tbody> >+- </tgroup> >+- </table> >+- </td> >+- </tr> >+- </table> >+- <para> >+- For headings, prefix a line with one or more <literal>#</literal> >+- signs: one for a major heading, two for a subheading, three for a >+- subsubheading. Be sure to leave space before and after the heading. >++ <listitem> >++ <simpara> >++ second >++ </simpara> >++ </listitem> >++ </orderedlist> >++ Definition list: >++ <variablelist> >++ <varlistentry> >++ <term> >++ DocBook >++ </term> >++ <listitem> >++ <simpara> >++ A sophisticated XML format. >++ </simpara> >++ </listitem> >++ </varlistentry> >++ <varlistentry> >++ <term> >++ orange >++ </term> >++ <listitem> >++ <simpara> >++ A healthy fruit. >++ </simpara> >++ </listitem> >++ <listitem> >++ <simpara> >++ A warm colour. >++ </simpara> >++ </listitem> >++ </varlistentry> >++ </variablelist> >+ </para> >+- <programlisting> >+-# Markdown >++ </section> >++</section> >+ >+-Text... >+- >+-## Some examples... >+- >+-Text... >+-</programlisting> >+- <sect2 id="wiki-links"> >+- <title>Wiki links</title> >+- <para> >+- Links to other wiki pages are formed this way: >+- <literal>[Page Name]()</literal>. (Gitit converts markdown links >+- with empty targets into wikilinks.) >+- </para> >+- <para> >+- To link to a wiki page using something else as the link text: >+- <literal>[something else](Page Name)</literal>. >+- </para> >+- <para> >+- Note that page names may contain spaces and some special >+- characters. They need not be CamelCase. CamelCase words are >+- <emphasis>not</emphasis> automatically converted to wiki links. >+- </para> >+- <para> >+- Wiki pages may be organized into directories. So, if you have >+- several pages on wine, you may wish to organize them like so: >+- </para> >+- <programlisting> >+-Wine/Pinot Noir >+-Wine/Burgundy >+-Wine/Cabernet Sauvignon >+-</programlisting> >+- <para> >+- Note that a wiki link <literal>[Burgundy]()</literal> that occurs >+- inside the <literal>Wine</literal> directory will link to >+- <literal>Wine/Burgundy</literal>, and not to >+- <literal>Burgundy</literal>. To link to a top-level page called >+- <literal>Burgundy</literal>, you'd have to use >+- <literal>[Burgundy](/Burgundy)</literal>. >+- </para> >+- <para> >+- To link to a directory listing for a subdirectory, use a trailing >+- slash: <literal>[Wine/]()</literal> will link to a listing of the >+- <literal>Wine</literal> subdirectory. >+- </para> >+- </sect2> >+-</sect1> >++~~~~~~~~ >diff --git a/www/hs-gitit/files/patch-data_markupHelp_DocBook b/www/hs-gitit/files/patch-data_markupHelp_DocBook >new file mode 100644 >index 000000000000..d246b8f7f45d >--- /dev/null >+++ b/www/hs-gitit/files/patch-data_markupHelp_DocBook >@@ -0,0 +1,125 @@ >+--- data/markupHelp/DocBook.orig 2023-07-10 15:44:20 UTC >++++ data/markupHelp/DocBook >+@@ -0,0 +1,122 @@ >++~~~~~~~~ >++ >++<section id="docbook"> >++ <title>Using DocBook</title> >++ <simpara> >++ As DocBook is an XML format, opening and closing tags >++ must match (<tag>...</tag>). >++ </simpara> >++ <section id="inline"> >++ <title>Text Formatting</title> >++ <simpara> >++ A simple paragraph. >++ </simpara> >++ <para> >++ A complex paragraph may contain blocks. >++ </para> >++ <simpara> >++ italics: <emphasis>italics</emphasis>, >++ bold: <emphasis role="strong">bold</emphasis>, >++ strikeout: <emphasis role="strikethrough">strikeout</emphasis>, >++ inline code snippets: <literal>inline code</literal>. >++ </simpara> >++ <simpara> >++ Links: >++ <ulink url="http://foo.bar/baz">external</ulink>, >++ <ulink url="Pagename">internal Wiki Link</ulink>. >++ </simpara> >++ <simpara> >++ Inserting an image: >++ <inlinemediaobject> >++ <alt>folder</alt> >++ <imageobject> >++ <imagedata fileref="/img/icons/folder.png" /> >++ </imageobject> >++ </inlinemediaobject> >++ </simpara> >++ </section> >++ <section id="blocks"> >++ <title>Text Blocks</title> >++ <para> >++ Quotation: >++ <blockquote> >++ <simpara> >++ A quotation set off from the main text. >++ </simpara> >++ </blockquote> >++ </para> >++ <para> >++ Code listing: >++ <programlisting> >++#!/bin/sh -e >++echo "Hello world" >++ </programlisting> >++ </para> >++ </section> >++ <section id="lists"> >++ <title>Lists</title> >++ <para> >++ Simple list: >++ <itemizedlist spacing="compact"> >++ <listitem> >++ <simpara> >++ first >++ </simpara> >++ </listitem> >++ <listitem> >++ <simpara> >++ second >++ </simpara> >++ </listitem> >++ </itemizedlist> >++ Numbered list: >++ <orderedlist spacing="compact"> >++ <listitem> >++ <simpara> >++ first >++ </simpara> >++ </listitem> >++ <listitem> >++ <simpara> >++ second >++ </simpara> >++ </listitem> >++ </orderedlist> >++ Definition list: >++ <variablelist> >++ <varlistentry> >++ <term> >++ DocBook >++ </term> >++ <listitem> >++ <simpara> >++ A sophisticated XML format. >++ </simpara> >++ </listitem> >++ </varlistentry> >++ <varlistentry> >++ <term> >++ orange >++ </term> >++ <listitem> >++ <simpara> >++ A healthy fruit. >++ </simpara> >++ </listitem> >++ <listitem> >++ <simpara> >++ A warm colour. >++ </simpara> >++ </listitem> >++ </varlistentry> >++ </variablelist> >++ </para> >++ </section> >++</section> >++ >++~~~~~~~~ >++ >++Further reading: >++[DocBook 5: The Definitive Guide](https://tdg.docbook.org/tdg/5.0/docbook.html), >++which includes the >++[List of DocBook elements](https://tdg.docbook.org/tdg/5.0/chunk-part-d64e8789.html). >diff --git a/www/hs-gitit/files/patch-gitit.cabal b/www/hs-gitit/files/patch-gitit.cabal >new file mode 100644 >index 000000000000..09264a8ab096 >--- /dev/null >+++ b/www/hs-gitit/files/patch-gitit.cabal >@@ -0,0 +1,31 @@ >+--- gitit.cabal.orig 2001-09-09 01:46:40 UTC >++++ gitit.cabal >+@@ -104,6 +104,10 @@ Flag plugins >+ plugins should disable this flag. >+ default: True >+ >++Flag with_rtsopts >++ description: Use -with-rtsopts=-I0 to avoid idle GC. >++ default: True >++ >+ Library >+ hs-source-dirs: src >+ exposed-modules: Network.Gitit, Network.Gitit.ContentTransformer, >+@@ -176,6 +180,8 @@ Library >+ exposed-modules: Network.Gitit.Interface >+ build-depends: ghc, ghc-paths >+ cpp-options: -D_PLUGINS >++ if flag(with_rtsopts) >++ cpp-options: -DRTSOPTS >+ default-extensions: CPP >+ default-language: Haskell2010 >+ ghc-options: -Wall -fno-warn-unused-do-bind >+@@ -198,6 +204,8 @@ Executable gitit >+ default-extensions: CPP >+ default-language: Haskell2010 >+ ghc-options: -Wall -threaded -fno-warn-unused-do-bind >++ if flag(with_rtsopts) >++ ghc-options: -rtsopts=all -with-rtsopts=-I0 >+ ghc-prof-options: -fprof-auto-exported -rtsopts >+ >+ Executable expireGititCache >diff --git a/www/hs-gitit/files/patch-src_Network_Gitit_Initialize.hs b/www/hs-gitit/files/patch-src_Network_Gitit_Initialize.hs >new file mode 100644 >index 000000000000..636e7ef14447 >--- /dev/null >+++ b/www/hs-gitit/files/patch-src_Network_Gitit_Initialize.hs >@@ -0,0 +1,14 @@ >+--- src/Network/Gitit/Initialize.hs.orig 2001-09-09 01:46:40 UTC >++++ src/Network/Gitit/Initialize.hs >+@@ -123,7 +123,10 @@ createDefaultPages :: Config -> IO () >+ createDefaultPages conf = do >+ let fs = filestoreFromConfig conf >+ pt = defaultPageType conf >+- toPandoc = readMarkdown def{ readerExtensions = enableExtension Ext_smart (readerExtensions def) } >++ rOpts = def{ readerExtensions = getDefaultExtensions "markdown" >++ <> extensionsFromList [Ext_smart] >++ <> readerExtensions def } >++ toPandoc = readMarkdown rOpts >+ defOpts = def{ writerExtensions = if showLHSBirdTracks conf >+ then enableExtension >+ Ext_literate_haskell >diff --git a/www/hs-gitit/files/patch-src_Network_Gitit_Util.hs b/www/hs-gitit/files/patch-src_Network_Gitit_Util.hs >new file mode 100644 >index 000000000000..d8cd908bcd5e >--- /dev/null >+++ b/www/hs-gitit/files/patch-src_Network_Gitit_Util.hs >@@ -0,0 +1,10 @@ >+--- src/Network/Gitit/Util.hs.orig 2001-09-09 01:46:40 UTC >++++ src/Network/Gitit/Util.hs >+@@ -115,6 +115,7 @@ parsePageType s = >+ "latex" -> (LaTeX,False) >+ "latex+lhs" -> (LaTeX,True) >+ "org" -> (Org,False) >++ "docbook" -> (DocBook,False) >+ "mediawiki" -> (MediaWiki,False) >+ x -> error $ "Unknown page type: " ++ x >+ >diff --git a/www/hs-gitit/pkg-descr b/www/hs-gitit/pkg-descr >new file mode 100644 >index 000000000000..c7c5cf1269ae >--- /dev/null >+++ b/www/hs-gitit/pkg-descr >@@ -0,0 +1,19 @@ >+Gitit is a wiki program written in Haskell. It uses Happstack for the >+web server and pandoc for markup processing. Pages and uploaded files >+are stored in a git, darcs, or mercurial repository and may be >+modified either by using the VCS's command-line tools or through >+the wiki's web interface. By default, pandoc's extended version of >+markdown is used as a markup language, but reStructuredText, LaTeX, >+HTML, DocBook, or Emacs Org-mode markup can also be used. Gitit can >+be configured to display TeX math (using texmath) and highlighted >+source code (using highlighting-kate). >+ >+Other features include >+ >+ * plugins: dynamically loaded page transformations written in >+ Haskell (see "Network.Gitit.Interface") >+ * categories >+ * caching >+ * Atom feeds (site-wide and per-page) >+ * a library, "Network.Gitit", that makes it simple to include >+ a gitit wiki in any happstack application >diff --git a/www/hs-gitit/pkg-plist b/www/hs-gitit/pkg-plist >new file mode 100644 >index 000000000000..af0a66fa3ec2 >--- /dev/null >+++ b/www/hs-gitit/pkg-plist >@@ -0,0 +1,71 @@ >+%%DATADIR%%/README.markdown >+%%DATADIR%%/data/default.conf >+%%DATADIR%%/data/FrontPage.page >+%%DATADIR%%/data/Help.page >+%%DATADIR%%/data/markup.DocBook >+%%DATADIR%%/data/markup.HTML >+%%DATADIR%%/data/markup.LaTeX >+%%DATADIR%%/data/markup.Markdown >+%%DATADIR%%/data/markup.Org >+%%DATADIR%%/data/markup.RST >+%%DATADIR%%/data/markup.Textile >+%%DATADIR%%/data/markupHelp/DocBook >+%%DATADIR%%/data/markupHelp/HTML >+%%DATADIR%%/data/markupHelp/LaTeX >+%%DATADIR%%/data/markupHelp/LaTeX+LHS >+%%DATADIR%%/data/markupHelp/Markdown >+%%DATADIR%%/data/markupHelp/Markdown+LHS >+%%DATADIR%%/data/markupHelp/Org >+%%DATADIR%%/data/markupHelp/RST >+%%DATADIR%%/data/markupHelp/RST+LHS >+%%DATADIR%%/data/post-update >+%%DATADIR%%/data/s5/default/blank.gif >+%%DATADIR%%/data/s5/default/bodybg.gif >+%%DATADIR%%/data/s5/default/framing.css >+%%DATADIR%%/data/s5/default/iepngfix.htc >+%%DATADIR%%/data/s5/default/opera.css >+%%DATADIR%%/data/s5/default/outline.css >+%%DATADIR%%/data/s5/default/pretty.css >+%%DATADIR%%/data/s5/default/print.css >+%%DATADIR%%/data/s5/default/s5-core.css >+%%DATADIR%%/data/s5/default/slides.css >+%%DATADIR%%/data/s5/default/slides.js >+%%DATADIR%%/data/s5/default/slides.min.js >+%%DATADIR%%/data/static/css/custom.css >+%%DATADIR%%/data/static/css/highlighting.css >+%%DATADIR%%/data/static/css/ie.css >+%%DATADIR%%/data/static/css/print.css >+%%DATADIR%%/data/static/css/reset-fonts-grids.css >+%%DATADIR%%/data/static/css/screen.css >+%%DATADIR%%/data/static/img/icons/feed.png >+%%DATADIR%%/data/static/img/icons/folder.png >+%%DATADIR%%/data/static/img/icons/page.png >+%%DATADIR%%/data/static/img/logo.png >+%%DATADIR%%/data/static/js/dragdiff.js >+%%DATADIR%%/data/static/js/footnotes.js >+%%DATADIR%%/data/static/js/jquery-1.2.6.js >+%%DATADIR%%/data/static/js/jquery-1.2.6.min.js >+%%DATADIR%%/data/static/js/jquery-ui-combined-1.6rc2.min.js >+%%DATADIR%%/data/static/js/jquery-ui.core-1.6rc2.js >+%%DATADIR%%/data/static/js/jquery-ui.draggable-1.6rc2.js >+%%DATADIR%%/data/static/js/jquery-ui.droppable-1.6rc2.js >+%%DATADIR%%/data/static/js/jquery-ui.tabs-1.6rc2.js >+%%DATADIR%%/data/static/js/jquery.hotkeys-0.7.9.js >+%%DATADIR%%/data/static/js/jquery.hotkeys-0.7.9.min.js >+%%DATADIR%%/data/static/js/MathMLinHTML.js >+%%DATADIR%%/data/static/js/preview.js >+%%DATADIR%%/data/static/js/search.js >+%%DATADIR%%/data/static/js/uploadForm.js >+%%DATADIR%%/data/static/robots.txt >+%%DATADIR%%/data/templates/content.st >+%%DATADIR%%/data/templates/expire.st >+%%DATADIR%%/data/templates/footer.st >+%%DATADIR%%/data/templates/getuser.st >+%%DATADIR%%/data/templates/listitem.st >+%%DATADIR%%/data/templates/logo.st >+%%DATADIR%%/data/templates/markuphelp.st >+%%DATADIR%%/data/templates/messages.st >+%%DATADIR%%/data/templates/page.st >+%%DATADIR%%/data/templates/pagetools.st >+%%DATADIR%%/data/templates/sitenav.st >+%%DATADIR%%/data/templates/userbox.st >-- >2.41.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 273260
: 244247