summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2014-02-21 19:25:35 +0000
committerSergei Trofimovich <slyfox@gentoo.org>2014-02-21 19:25:35 +0000
commitc5f5d66205a4bd0726355b4686f913a2720f2fe2 (patch)
tree8e43872a8dbd9340e96fee915206fe717ac23349 /dev-vcs
parentHPPA stable (because they have the provider stable, and this is a virtual) (diff)
downloadhistorical-c5f5d66205a4bd0726355b4686f913a2720f2fe2.tar.gz
historical-c5f5d66205a4bd0726355b4686f913a2720f2fe2.tar.bz2
historical-c5f5d66205a4bd0726355b4686f913a2720f2fe2.zip
Add basic ghc-7.8 support.
Package-Manager: portage-2.2.8_p51/cvs/Linux x86_64 Manifest-Sign-Key: 0x611FF3AA
Diffstat (limited to 'dev-vcs')
-rw-r--r--dev-vcs/darcs/ChangeLog8
-rw-r--r--dev-vcs/darcs/Manifest20
-rw-r--r--dev-vcs/darcs/darcs-2.8.4-r3.ebuild128
-rw-r--r--dev-vcs/darcs/files/darcs-2.8.4-ghc-7.8-part-1.patch128
4 files changed, 269 insertions, 15 deletions
diff --git a/dev-vcs/darcs/ChangeLog b/dev-vcs/darcs/ChangeLog
index 6147673c0bee..bd5d6687ad88 100644
--- a/dev-vcs/darcs/ChangeLog
+++ b/dev-vcs/darcs/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-vcs/darcs
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/ChangeLog,v 1.52 2014/01/18 19:49:39 ago Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/ChangeLog,v 1.53 2014/02/21 19:25:26 slyfox Exp $
+
+*darcs-2.8.4-r3 (21 Feb 2014)
+
+ 21 Feb 2014; Sergei Trofimovich <slyfox@gentoo.org> +darcs-2.8.4-r3.ebuild,
+ +files/darcs-2.8.4-ghc-7.8-part-1.patch:
+ Add basic ghc-7.8 support.
18 Jan 2014; Agostino Sarubbo <ago@gentoo.org> darcs-2.8.4.ebuild:
Stable for alpha, wrt bug #485656
diff --git a/dev-vcs/darcs/Manifest b/dev-vcs/darcs/Manifest
index 28cfb33360eb..80ada9d8a0a3 100644
--- a/dev-vcs/darcs/Manifest
+++ b/dev-vcs/darcs/Manifest
@@ -2,26 +2,18 @@
Hash: SHA256
AUX darcs-2.8.0-mtl-2.1.patch 1289 SHA256 50798b5d69b4600c3c9d15acdf4476b8a3764afb4d746e28eb79c9381bc3ae7b SHA512 bf3694cf774083a64c25038dd38be80e23125d4e41e34fda1b56b629e3c54152a5f781e252ab8187cd8c67480892a75624c77fc81e6a0e1927b8efacc3840cb9 WHIRLPOOL c5cc78e8feaa144dda546678e753d5102a92735af59c5455fe79db77207cece791093729f460c319d0d167d7b0506dedfeeb89c04d987cae17e646372e43dbcb
+AUX darcs-2.8.4-ghc-7.8-part-1.patch 5679 SHA256 454ca11d487379d3d7b19acae2c599bace01356c3f7c7a5cdace1018e82e6eda SHA512 9c6674e835227cae04074f82777a08e7b1cedc6b42deff7c271c53e2622b14217926a52ccba7651e3b7e0cfd40e0243e10529141ceae9044895d021af8ee1599 WHIRLPOOL f6063033e215dabd93e79a6b7417586ae75be89172c86c7c07ccabadc9b9593de6c83896c754314c281a5c2715ce56be4c2173b9f51582d01ad0273233ece1b0
DIST darcs-2.8.0.tar.gz 1297733 SHA256 1415c2a1a99db8cf76d5f31f6a3490a2a9d3e13f2abfcc67fc108885cf52ce83 SHA512 a944afad043a4ec21a88f090c7678dfc6790c1fd3ee07e8a10a63e0ee23de05460c585a0b542bf47c2fe1a007125da86c1a45db198b425f866b198eb6b4dcf64 WHIRLPOOL 10eba204757ec859b764cab4f4e2260d67d948f97d2b01c7b4bfc2952f218b9dc0575760e27ce02ba0844e1193a987036a69e6696a7e725ac66a44779bc718d7
DIST darcs-2.8.4.tar.gz 1301464 SHA256 3fab4dbb2d5dd9f381d49f4730c12e1534b5c484b0dde9712614a7151f659f98 SHA512 c60531bacea43bdd5a18ae461dd390fe64682cac56fa4e6b5153a5da3c003b59d8fb24827bd42b4b30f0d2c61877d36b58eb98317644f9f8a200ab7c5961c48e WHIRLPOOL 128e8e58e219d427928eb8725d9566c1b6b3bb478b3cda69b30ded8798fa104eb8dec0fda8a32701f5d074babf9f11f1b3036388cd15a82118853a566c832430
EBUILD darcs-2.8.0.ebuild 4054 SHA256 9227dbddf1d0167b768ea4ef82ffdf4a81e3e1da7b81ff6af04429f6e92eb654 SHA512 88a7b2bd3e9aec2c2ccf81778cb002fe0135d3302ca26446d86f67b1215959e20e3786cd052643a8c81624451afd8a8a537458ebc10e9d89a63f1f973c4a0477 WHIRLPOOL 9f909b7b5fa4ca4b7f01c24b1b75f22616748d20499a1915a0213d5d542d0f869d2427bc928e598a943293014a9d1e90aed29e86dda5cde0d6ef39a033ebf9f9
+EBUILD darcs-2.8.4-r3.ebuild 4518 SHA256 02f691062bdd148c0bc42bd9b805de612f05cc53354a73e063542814e2926498 SHA512 6adbf8b0217e1d7e2b0455896b194e256cbc019962037f592491d77bf338167277093ccc66ef359f9e7edc84c2629159406c0a91af93bdbc4f4a58bcfe24bb89 WHIRLPOOL 270679efd2794d8322c85f56dcc8c40021bd2eaba5d6fea89e792bc1be6786733f78c1069025cad6b034c57f4055261674e70b05fc95d348b46dbd6ece72e739
EBUILD darcs-2.8.4.ebuild 4007 SHA256 da954f2190488bf79281f4fb886e4905449b4558f60fb011702eb4c13a2f6166 SHA512 c4a5ffc93b719eb33cf43f869a4b2db67b3bc96a6296188900c15020fe536670f1eee4ff33605fb6a193ac0a0d533a6d47dd6bb79edf266065f50405634c31ba WHIRLPOOL ed40c3cc1e73a2bcc87d59a645e99f107387d104e553ccc515ab7c11aa5dc06473395ac6753ea20c0fc5bd2c667ed777b39a6939a20f6c730f6cb7223dda544b
-MISC ChangeLog 26314 SHA256 15a1a2173abef47c34a02ace8de1e267c8956eb6e51f7e4decf4015dc25c7b13 SHA512 8e84d2fb98b5ab243de13ac31077925b617b1f1c237a09c26668f321ed6d72d85207f6abf17fbca6e93006014062ae53952ccc5fc710a477236f6bb4fd362f6c WHIRLPOOL d7c23bfaf6b18c0afcce193efe233b1212e7d9c0454db1e574abc0e9772e9acb68a2d0bf63745072b14481db77035a0a7404f1c3947b87849e3081ca5588e830
+MISC ChangeLog 26499 SHA256 5bd921bc3515076c0f294fdd453e9c6f751a66abe1c713fdbd32f54d133ee65d SHA512 c832e2e861f6668f9ef9cdb8ed57e544c137f252c832afe3c20a43e85ff813799182e2464dbafb3c6b0553fa507f13f2324422b07acbd8507f591f638e211472 WHIRLPOOL f974fab98694741151e506b2709f4ab96d95769562697b43981ac9aebd4fd82a449fa2a3187202790206cecd8be3fe7612c9cb12bf6f78c1589c8b3488998302
MISC metadata.xml 223 SHA256 1d00c8be162a6cb87b3de440b3e63e10b39c12d56e8fbfe592e75aed872b2508 SHA512 24765bbf1cb187cd262aa7fb3824c1cec65e2bf3f2198099de688916d96401a26458265b15408f22b1fbd6d6a2842df814a57ceda80dfa00d130b24423b7544f WHIRLPOOL 8fd6700f6198db6540eb51edf11372faeb6eb8a542a692e515badf236f62444f2c180f7d08e0f98e9fdfa23de14631b31af50543469aaa27084d6b637e2644c7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
-iQIcBAEBCAAGBQJS2trUAAoJELp701BxlEWfMAoQAJy9aUsFpYynJRX2Gi63LR6i
-VQyo9JtiTBzBi3SvdtcdOeAIGfkXKBnZ9EFDLJIaE82zOBdJj/IRlNyRkihMCrkm
-5ZpL1ncb1W09jmH5LPrpS2/P+IVgSlfyk9c/UBH726l+BvDgrsQGhswW/g+OEw/n
-IS5SB9VptOAA7VzR5jceBiwqb8gHDk2xVCBJ7sLZcNJSwsKAYGLWJa292X5XUvFp
-v+vJ/X7CpWTopeUTBzVYJ1lai7RDLp6MmFuM5UbkldRm5FHCBwifXLsrZ8AC7OHt
-i5IihbfKUFr/xZ53VA+2gMQYvxb5Yz9SAwX8d2x4X2J9byDKjB225m0MqptNiMH8
-CP01fBNa1vuzIBO5Aw+hsPJiYgTtdZWH2u/rQxEpz6lrwpWQP/qBgvhSrSeVmrP1
-V1ZAdCla1RzcCodrt90c5S9QHWLuLmjJGIv7xf11SAG7TRav7Qh+yWbjGJsbz2K+
-OHHQ6vUgNh0TPLnJeiw3bnGfCYzxwWmrZdCBfvyhDSl9MY5MlKV5ojKQBuQ4vlcp
-nRYzi96CA4g0LKJ8DmBybWCLuNPZKVJU22X98OTNTfJtzJxZRtBIW5V/cg8kAl6x
-3hRC7MHJOyqn5YPpo/yOjHdxcuL6wZso+HXEZ+f+ot7jvylXQZsZ3JvvT1zJHUYA
-gCiKLLyAkBdH1XUxT7JS
-=C1QP
+iEYEAREIAAYFAlMHqBsACgkQcaHudmEf86rPbwCdF2dQdpThXQQgakE64YtElb2+
+v5wAn3GDt7m9gv2KlxckLpJqlTsZCXZf
+=4vAs
-----END PGP SIGNATURE-----
diff --git a/dev-vcs/darcs/darcs-2.8.4-r3.ebuild b/dev-vcs/darcs/darcs-2.8.4-r3.ebuild
new file mode 100644
index 000000000000..c888099f89a7
--- /dev/null
+++ b/dev-vcs/darcs/darcs-2.8.4-r3.ebuild
@@ -0,0 +1,128 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/darcs-2.8.4-r3.ebuild,v 1.1 2014/02/21 19:25:26 slyfox Exp $
+
+EAPI=5
+
+# ebuild generated by hackport 0.3.9999
+
+CABAL_FEATURES="bin lib profile haddock hoogle hscolour"
+inherit eutils haskell-cabal bash-completion-r1
+
+DESCRIPTION="a distributed, interactive, smart revision control system"
+HOMEPAGE="http://darcs.net/"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris"
+IUSE="doc test"
+
+RDEPEND="=dev-haskell/extensible-exceptions-0.1*:=[profile?]
+ >=dev-haskell/hashed-storage-0.5.6:=[profile?]
+ <dev-haskell/hashed-storage-0.6:=[profile?]
+ >=dev-haskell/haskeline-0.6.3:=[profile?]
+ <dev-haskell/haskeline-0.8:=[profile?]
+ =dev-haskell/html-1.0*:=[profile?]
+ =dev-haskell/mmap-0.5*:=[profile?]
+ >=dev-haskell/mtl-1.0:=[profile?]
+ <dev-haskell/mtl-2.2:=[profile?]
+ >=dev-haskell/parsec-2.0:=[profile?]
+ <dev-haskell/parsec-3.2:=[profile?]
+ =dev-haskell/random-1.0*:=[profile?]
+ >=dev-haskell/regex-compat-0.95.1:=[profile?]
+ >=dev-haskell/tar-0.3:=[profile?]
+ <dev-haskell/tar-0.5:=[profile?]
+ >=dev-haskell/terminfo-0.3:=[profile?] <dev-haskell/terminfo-0.5:=[profile?]
+ >=dev-haskell/text-0.11.0.6:=[profile?]
+ >=dev-haskell/vector-0.7:=[profile?]
+ >=dev-haskell/zlib-0.5.1.0:=[profile?]
+ <dev-haskell/zlib-0.6.0.0:=[profile?]
+ >=dev-lang/ghc-6.10.4:=
+ net-misc/curl"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+ doc? ( virtual/latex-base
+ || ( dev-tex/latex2html[png]
+ dev-tex/latex2html[gif]
+ )
+ )
+ test? ( >=dev-haskell/cmdlib-0.2.1[profile?]
+ <dev-haskell/cmdlib-0.4[profile?]
+ =dev-haskell/findbin-0.0*[profile?]
+ >=dev-haskell/quickcheck-2.3
+ >=dev-haskell/shellish-0.1.3[profile?]
+ <dev-haskell/shellish-0.2[profile?]
+ >=dev-haskell/test-framework-0.4.0[profile?]
+ >=dev-haskell/test-framework-hunit-0.2.2[profile?]
+ >=dev-haskell/test-framework-quickcheck2-0.2.8[profile?]
+ )
+ "
+
+src_prepare() {
+ rm "${S}/tests/add_permissions.sh" || die "Could not rm add_permissions.sh"
+ rm "${S}/tests/send-output-v1.sh" || die "Could not rm send-output-v1.sh"
+ rm "${S}/tests/send-output-v2.sh" || die "Could not rm send-output-v2.sh"
+ rm "${S}/tests/utf8.sh" || die "Could not rm utf8.sh"
+
+ epatch "${FILESDIR}"/${P}-ghc-7.8-part-1.patch
+
+ cabal_chdeps \
+ 'text >= 0.11.0.6 && < 0.12.0.0' 'text >= 0.11.0.6' \
+ 'terminfo == 0.3.*' 'terminfo >= 0.3 && < 0.5' \
+ 'array >= 0.1 && < 0.5' 'array >= 0.1 && <0.6' \
+ 'process >= 1.0.0.0 && < 1.2.0.0' 'process >= 1.0.0.0 && < 1.3' \
+ 'unix >= 1.0 && < 2.7' 'unix >=1.0 && <2.8' \
+ 'base >= 4.5 && < 4.7' 'base >= 4.5 && < 4.8' \
+ 'ghc >= 6.10 && < 7.8' 'ghc >= 6.10 && < 7.9'
+}
+
+src_configure() {
+ # checking whether ghc supports -threaded flag
+ # Beware: http://www.haskell.org/ghc/docs/latest/html/users_guide/options-phases.html#options-linker
+ # contains: 'The ability to make a foreign call that does not block all other Haskell threads.'
+ # It might have interactivity impact.
+
+ threaded_flag=""
+ if $(ghc-getghc) --info | grep "Support SMP" | grep -q "YES"; then
+ threaded_flag="--flags=threaded"
+ einfo "$P will be built with threads support"
+ else
+ threaded_flag="--flags=-threaded"
+ einfo "$P will be built without threads support"
+ fi
+
+ # Use curl for net stuff to avoid strict version dep on HTTP and network
+ cabal_src_configure \
+ --flags=curl \
+ --flags=-http \
+ --flags=color \
+ --flags=terminfo \
+ --flags=mmap \
+ --flags=force-char8-encoding \
+ $threaded_flag \
+ $(cabal_flag test)
+}
+
+src_test() {
+ # run cabal test from haskell-cabal
+ haskell-cabal_src_test || die "cabal test failed"
+}
+
+src_install() {
+ cabal_src_install
+ newbashcomp "${S}/contrib/darcs_completion" "${PN}"
+
+ # fixup perms in such an an awkward way
+ mv "${ED}/usr/share/man/man1/darcs.1" "${S}/darcs.1" || die "darcs.1 not found"
+ doman "${S}/darcs.1" || die "failed to register darcs.1 as a manpage"
+}
+
+pkg_postinst() {
+ ghc-package_pkg_postinst
+
+ ewarn "NOTE: in order for the darcs send command to work properly,"
+ ewarn "you must properly configure your mail transport agent to relay"
+ ewarn "outgoing mail. For example, if you are using ssmtp, please edit"
+ ewarn "${EPREFIX}/etc/ssmtp/ssmtp.conf with appropriate values for your site."
+}
diff --git a/dev-vcs/darcs/files/darcs-2.8.4-ghc-7.8-part-1.patch b/dev-vcs/darcs/files/darcs-2.8.4-ghc-7.8-part-1.patch
new file mode 100644
index 000000000000..3680c29b0440
--- /dev/null
+++ b/dev-vcs/darcs/files/darcs-2.8.4-ghc-7.8-part-1.patch
@@ -0,0 +1,128 @@
+diff --git a/src/Crypt/SHA256.hs b/src/Crypt/SHA256.hs
+index 69a8a4c..606f2ad 100644
+--- a/src/Crypt/SHA256.hs
++++ b/src/Crypt/SHA256.hs
+@@ -20,9 +20,10 @@ import Numeric (showHex)
+ import Foreign.C.String ( withCString )
+ import Data.ByteString.Unsafe (unsafeUseAsCStringLen)
+ import qualified Data.ByteString as B
++import qualified System.IO.Unsafe as U
+
+ sha256sum :: B.ByteString -> String
+-sha256sum p = unsafePerformIO $
++sha256sum p = U.unsafePerformIO $
+ withCString (take 64 $ repeat 'x') $ \digestCString ->
+ unsafeUseAsCStringLen p $ \(ptr,n) ->
+ do let digest = castPtr digestCString :: Ptr Word8
+diff --git a/src/Darcs/Commands/Get.hs b/src/Darcs/Commands/Get.hs
+index e450d28..6b51915 100644
+--- a/src/Darcs/Commands/Get.hs
++++ b/src/Darcs/Commands/Get.hs
+@@ -157,7 +157,8 @@ copyRepoAndGoToChosenVersion opts repodir rfsource = do
+ copyRepo
+ withRepository opts ((RepoJob $ \repository -> goToChosenVersion repository opts) :: RepoJob ())
+ putInfo opts $ text "Finished getting."
+- where copyRepo =
++ where copyRepo :: IO ()
++ copyRepo =
+ withRepository opts $ RepoJob $ \repository ->
+ if formatHas HashedInventory rfsource
+ then do
+diff --git a/src/Darcs/Global.hs b/src/Darcs/Global.hs
+index 9792bf0..e17f071 100644
+--- a/src/Darcs/Global.hs
++++ b/src/Darcs/Global.hs
+@@ -60,8 +60,9 @@ module Darcs.Global
+ import Control.Applicative ( (<$>), (<*>) )
+ import Control.Monad ( when )
+ import Control.Concurrent.MVar
+-import Control.Exception.Extensible ( bracket_, catch, catchJust, SomeException
+- , block, unblock
++import Control.Exception.Extensible as E
++ ( bracket_, catch, catchJust, SomeException
++ , mask
+ )
+ import Data.IORef ( IORef, newIORef, readIORef, writeIORef )
+ import Data.IORef ( modifyIORef )
+@@ -106,12 +107,12 @@ withAtexit prog =
+ exit
+ prog
+ where
+- exit = block $ do
++ exit = E.mask $ \restore -> do
+ Just actions <- swapMVar atexitActions Nothing
+ -- from now on atexit will not register new actions
+- mapM_ runAction actions
+- runAction action =
+- catch (unblock action) $ \(exn :: SomeException) -> do
++ mapM_ (runAction restore) actions
++ runAction restore action =
++ catch (restore action) $ \(exn :: SomeException) -> do
+ hPutStrLn stderr $ "Exception thrown by an atexit registered action:"
+ hPutStrLn stderr $ show exn
+
+diff --git a/src/Darcs/SignalHandler.hs b/src/Darcs/SignalHandler.hs
+index ac0f526..d0ef162 100644
+--- a/src/Darcs/SignalHandler.hs
++++ b/src/Darcs/SignalHandler.hs
+@@ -26,8 +26,8 @@ import Prelude hiding ( catch )
+ import System.IO.Error ( isUserError, ioeGetErrorString, ioeGetFileName )
+ import System.Exit ( exitWith, ExitCode ( ExitFailure ) )
+ import Control.Concurrent ( ThreadId, myThreadId )
+-import Control.Exception.Extensible
+- ( catch, throw, throwTo, block, unblock,
++import Control.Exception.Extensible as E
++ ( catch, throw, throwTo, mask,
+ Exception(..), SomeException(..), IOException )
+ import System.Posix.Files ( getFdStatus, isNamedPipe )
+ import System.Posix.IO ( stdOutput )
+@@ -128,8 +128,8 @@ catchUserErrors comp handler = catch comp handler'
+ | otherwise = throw ioe
+
+ withSignalsBlocked :: IO a -> IO a
+-withSignalsBlocked job = block (job >>= \r ->
+- unblock(return r) `catchSignal` couldnt_do r)
++withSignalsBlocked job = E.mask $ \restore -> (job >>= \r ->
++ restore (return r) `catchSignal` couldnt_do r)
+ where couldnt_do r s | s == sigINT = oops "interrupt" r
+ | s == sigHUP = oops "HUP" r
+ | s == sigABRT = oops "ABRT" r
+diff --git a/src/Darcs/Test/Patch/Info.hs b/src/Darcs/Test/Patch/Info.hs
+index fd27fb3..b35cfef 100644
+--- a/src/Darcs/Test/Patch/Info.hs
++++ b/src/Darcs/Test/Patch/Info.hs
+@@ -28,7 +28,6 @@ import Data.Maybe ( isNothing )
+ import Data.Text as T ( find, any )
+ import Data.Text.Encoding ( decodeUtf8With )
+ import Data.Text.Encoding.Error ( lenientDecode )
+-import Foreign ( unsafePerformIO )
+ import Test.QuickCheck ( Arbitrary(arbitrary), oneof, listOf, choose, shrink
+ , Gen )
+ import Test.Framework.Providers.QuickCheck2 ( testProperty )
+@@ -39,6 +38,8 @@ import Darcs.Patch.Info ( PatchInfo(..), patchinfo,
+ piLog, piAuthor, piName )
+ import ByteStringUtils ( decodeLocale, packStringToUTF8, unpackPSFromUTF8 )
+
++import qualified System.IO.Unsafe as U
++
+ testSuite :: Test
+ testSuite = testGroup "Darcs.Patch.Info"
+ [ metadataDecodingTest
+@@ -86,7 +87,7 @@ instance Arbitrary UTF8PatchInfo where
+ sa <- shrink (piAuthor pi)
+ sl <- shrink (filter (not . isPrefixOf "Ignore-this:") (piLog pi))
+ return (UTF8PatchInfo
+- (unsafePerformIO $ patchinfo sn
++ (U.unsafePerformIO $ patchinfo sn
+ (BC.unpack (_piDate pi)) sa sl))
+
+ instance Arbitrary UTF8OrNotPatchInfo where
+@@ -101,7 +102,7 @@ arbitraryUTF8Patch =
+ d <- arbitrary
+ a <- asString `fmap` arbitrary
+ l <- (lines . asString) `fmap` arbitrary
+- return $ unsafePerformIO $ patchinfo n d a l
++ return $ U.unsafePerformIO $ patchinfo n d a l
+
+ -- | Generate arbitrary patch metadata that has totally arbitrary byte strings
+ -- as its name, date, author and log.