{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
module Distribution.PackageDescription.Quirks (patchQuirks) where
import Distribution.Compat.Prelude
import Distribution.Utils.MD5
import GHC.Fingerprint (Fingerprint (..))
import Prelude ()
import qualified Data.ByteString as BS
import qualified Data.Map as Map
patchQuirks :: BS.ByteString -> (Bool, BS.ByteString)
patchQuirks :: ByteString -> (Bool, ByteString)
patchQuirks ByteString
bs = case (ByteString, MD5)
-> Map (ByteString, MD5) (MD5, ByteString -> ByteString)
-> Maybe (MD5, ByteString -> ByteString)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (Int -> ByteString -> ByteString
BS.take Int
256 ByteString
bs, ByteString -> MD5
md5 ByteString
bs) Map (ByteString, MD5) (MD5, ByteString -> ByteString)
patches of
Maybe (MD5, ByteString -> ByteString)
Nothing -> (Bool
False, ByteString
bs)
Just (MD5
post, ByteString -> ByteString
f)
| MD5
post MD5 -> MD5 -> Bool
forall a. Eq a => a -> a -> Bool
/= ByteString -> MD5
md5 ByteString
output -> (Bool
False, ByteString
bs)
| Bool
otherwise -> (Bool
True, ByteString
output)
where
output :: ByteString
output = ByteString -> ByteString
f ByteString
bs
patches :: Map.Map (BS.ByteString, Fingerprint) (Fingerprint, BS.ByteString -> BS.ByteString)
patches :: Map (ByteString, MD5) (MD5, ByteString -> ByteString)
patches = [((ByteString, MD5), (MD5, ByteString -> ByteString))]
-> Map (ByteString, MD5) (MD5, ByteString -> ByteString)
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- This file has been generated from package.yaml by hpack version 0.17.0.\n--\n-- see: https://github.com/sol/hpack\n\nname: unicode-transforms\nversion: 0.3.3\nsynopsis: Unicode normalization\ndescription: Fast Unic"
(Word64 -> Word64 -> MD5
Fingerprint Word64
15958160436627155571 Word64
10318709190730872881)
(Word64 -> Word64 -> MD5
Fingerprint Word64
11008465475756725834 Word64
13815629925116264363)
(ByteString -> ByteString -> ByteString
bsRemove ByteString
" other-modules:\n .\n")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: DSTM\nVersion: 0.1.2\nCopyright: (c) 2010, Frank Kupke\nLicense: LGPL\nLicense-File: LICENSE\nAuthor: Frank Kupke\nMaintainer: frk@informatik.uni-kiel.de\nCabal-Version: >= 1.2.3\nStability: provisional\nSynopsis: A framework for using STM within distributed "
(Word64 -> Word64 -> MD5
Fingerprint Word64
6919263071548559054 Word64
9050746360708965827)
(Word64 -> Word64 -> MD5
Fingerprint Word64
17015177514298962556 Word64
11943164891661867280)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Other modules:" ByteString
"-- ")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: DSTM\nVersion: 0.1.1\nCopyright: (c) 2010, Frank Kupke\nLicense: LGPL\nLicense-File: LICENSE\nAuthor: Frank Kupke\nMaintainer: frk@informatik.uni-kiel.de\nCabal-Version: >= 1.2.3\nStability: provisional\nSynopsis: A framework for using STM within distributed "
(Word64 -> Word64 -> MD5
Fingerprint Word64
17313105789069667153 Word64
9610429408495338584)
(Word64 -> Word64 -> MD5
Fingerprint Word64
17250946493484671738 Word64
17629939328766863497)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Other modules:" ByteString
"-- ")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: DSTM\nVersion: 0.1\nCopyright: (c) 2010, Frank Kupke\nLicense: LGPL\nLicense-File: LICENSE\nAuthor: Frank Kupke\nMaintainer: frk@informatik.uni-kiel.de\nCabal-Version: >= 1.2.3\nStability: provisional\nSynopsis: A framework for using STM within distributed sy"
(Word64 -> Word64 -> MD5
Fingerprint Word64
10502599650530614586 Word64
16424112934471063115)
(Word64 -> Word64 -> MD5
Fingerprint Word64
13562014713536696107 Word64
17899511905611879358)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Other modules:" ByteString
"-- ")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: control-monad-exception-mtl\nversion: 0.10.3\nCabal-Version: >= 1.10\nbuild-type: Simple\nlicense: PublicDomain\nauthor: Pepe Iborra\nmaintainer: pepeiborra@gmail.com\nhomepage: http://pepeiborra.github.com/control-monad-exception\nsynopsis: MTL instances f"
(Word64 -> Word64 -> MD5
Fingerprint Word64
18274748422558568404 Word64
4043538769550834851)
(Word64 -> Word64 -> MD5
Fingerprint Word64
11395257416101232635 Word64
4303318131190196308)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
" default- extensions:" ByteString
"unknown-section")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: vacuum-opengl\nVersion: 0.0\nSynopsis: Visualize live Haskell data structures using vacuum, graphviz and OpenGL.\nDescription: \DELVisualize live Haskell data structures using vacuum, graphviz and OpenGL.\n "
(Word64 -> Word64 -> MD5
Fingerprint Word64
5946760521961682577 Word64
16933361639326309422)
(Word64 -> Word64 -> MD5
Fingerprint Word64
14034745101467101555 Word64
14024175957788447824)
(ByteString -> ByteString -> ByteString
bsRemove ByteString
"\DEL")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: vacuum-opengl\nVersion: 0.0.1\nSynopsis: Visualize live Haskell data structures using vacuum, graphviz and OpenGL.\nDescription: \DELVisualize live Haskell data structures using vacuum, graphviz and OpenGL.\n "
(Word64 -> Word64 -> MD5
Fingerprint Word64
10790950110330119503 Word64
1309560249972452700)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1565743557025952928 Word64
13645502325715033593)
(ByteString -> ByteString -> ByteString
bsRemove ByteString
"\DEL")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: ixset\nVersion: 1.0.4\nSynopsis: Efficient relational queries on Haskell sets.\nDescription:\n Create and query sets that are indexed by multiple indices.\nLicense: BSD3\nLicense-file: COPYING\nAut"
(Word64 -> Word64 -> MD5
Fingerprint Word64
11886092342440414185 Word64
4150518943472101551)
(Word64 -> Word64 -> MD5
Fingerprint Word64
5731367240051983879 Word64
17473925006273577821)
(ByteString -> ByteString -> ByteString
bsRemoveStarting ByteString
"{-")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: ds-kanren\nversion: 0.2.0.0\nsynopsis: A subset of the miniKanren language\ndescription:\n ds-kanren is an implementation of the <http://minikanren.org miniKanren> language.\n .\n == What's in ds-kanren?\n .\n ['dis"
(Word64 -> Word64 -> MD5
Fingerprint Word64
2804006762382336875 Word64
9677726932108735838)
(Word64 -> Word64 -> MD5
Fingerprint Word64
9830506174094917897 Word64
12812107316777006473)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Test-Suite test-unify:" ByteString
"Test-Suite \"test-unify:\"" (ByteString -> ByteString)
-> (ByteString -> ByteString) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Test-Suite test-list-ops:" ByteString
"Test-Suite \"test-list-ops:\"")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: ds-kanren\nversion: 0.2.0.1\nsynopsis: A subset of the miniKanren language\ndescription:\n ds-kanren is an implementation of the <http://minikanren.org miniKanren> language.\n\nlicense: MIT\nlicense-file: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
9130259649220396193 Word64
2155671144384738932)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1847988234352024240 Word64
4597789823227580457)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Test-Suite test-unify:" ByteString
"Test-Suite \"test-unify:\"" (ByteString -> ByteString)
-> (ByteString -> ByteString) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"Test-Suite test-list-ops:" ByteString
"Test-Suite \"test-list-ops:\"")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: metric\nversion: 0.1.4\nsynopsis: Metric spaces.\nlicense: MIT\nlicense-file: LICENSE\nauthor: Vikram Verma\nmaintainer: me@vikramverma.com\ncategory: Data\nbuild-type:"
(Word64 -> Word64 -> MD5
Fingerprint Word64
6150019278861565482 Word64
3066802658031228162)
(Word64 -> Word64 -> MD5
Fingerprint Word64
9124826020564520548 Word64
15629704249829132420)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"test-suite metric-tests:" ByteString
"test-suite \"metric-tests:\"")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: metric\nversion: 0.2.0\nsynopsis: Metric spaces.\nlicense: MIT\nlicense-file: LICENSE\nauthor: Vikram Verma\nmaintainer: me@vikramverma.com\ncategory: Data\nbuild-type:"
(Word64 -> Word64 -> MD5
Fingerprint Word64
4639805967994715694 Word64
7859317050376284551)
(Word64 -> Word64 -> MD5
Fingerprint Word64
5566222290622325231 Word64
873197212916959151)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"test-suite metric-tests:" ByteString
"test-suite \"metric-tests:\"")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: phasechange\ncategory: Data\nversion: 0.1\nauthor: G\195\161bor Lehel\nmaintainer: G\195\161bor Lehel <illissius@gmail.com>\nhomepage: http://github.com/glehel/phasechange\ncopyright: Copyright (C) 2012 G\195\161bor Lehel\nlicense: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
10546509771395401582 Word64
245508422312751943)
(Word64 -> Word64 -> MD5
Fingerprint Word64
5169853482576003304 Word64
7247091607933993833)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"impl(ghc >= 7.4):" ByteString
"erroneous-section" (ByteString -> ByteString)
-> (ByteString -> ByteString) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"impl(ghc >= 7.6):" ByteString
"erroneous-section")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: smartword\nSynopsis: Web based flash card for Word Smart I and II vocabularies\nVersion: 0.0.0.5\nHomepage: http://kyagrd.dyndns.org/~kyagrd/project/smartword/\nCategory: Web,Education\nLicense: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
7803544783533485151 Word64
10807347873998191750)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1665635316718752601 Word64
16212378357991151549)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"build depends:" ByteString
"--")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: shelltestrunner\n-- sync with README.md, ANNOUNCE:\nversion: 1.3\ncategory: Testing\nsynopsis: A tool for testing command-line programs.\ndescription:\n shelltestrunner is a cross-platform tool for testing command-line\n program"
(Word64 -> Word64 -> MD5
Fingerprint Word64
4403237110790078829 Word64
15392625961066653722)
(Word64 -> Word64 -> MD5
Fingerprint Word64
10218887328390239431 Word64
4644205837817510221)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"other modules:" ByteString
"--")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further \n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP) \n-- "
(Word64 -> Word64 -> MD5
Fingerprint Word64
8570120150072467041 Word64
18315524331351505945)
(Word64 -> Word64 -> MD5
Fingerprint Word64
10838007242302656005 Word64
16026440017674974175)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further \n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP) \n-- "
(Word64 -> Word64 -> MD5
Fingerprint Word64
5262875856214215155 Word64
10846626274067555320)
(Word64 -> Word64 -> MD5
Fingerprint Word64
3022954285783401045 Word64
13395975869915955260)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further \n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP) \n-- "
(Word64 -> Word64 -> MD5
Fingerprint Word64
54222628930951453 Word64
5526514916844166577)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1749630806887010665 Word64
8607076506606977549)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP)\n-- fo"
(Word64 -> Word64 -> MD5
Fingerprint Word64
6817250511240350300 Word64
15278852712000783849)
(Word64 -> Word64 -> MD5
Fingerprint Word64
15757717081429529536 Word64
15542551865099640223)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP)\n-- fo"
(Word64 -> Word64 -> MD5
Fingerprint Word64
8310050400349211976 Word64
201317952074418615)
(Word64 -> Word64 -> MD5
Fingerprint Word64
10283381191257209624 Word64
4231947623042413334)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP)\n-- fo"
(Word64 -> Word64 -> MD5
Fingerprint Word64
7010988292906098371 Word64
11591884496857936132)
(Word64 -> Word64 -> MD5
Fingerprint Word64
6158672440010710301 Word64
6419743768695725095)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\r\n-- documentation, see http://haskell.org/cabal/users-guide/\r\n\r\n-- The name of the package.\r\nname: hblas\r\n\r\n-- The package version. See the Haskell package versioning policy (PVP)"
(Word64 -> Word64 -> MD5
Fingerprint Word64
2076850805659055833 Word64
16615160726215879467)
(Word64 -> Word64 -> MD5
Fingerprint Word64
10634706281258477722 Word64
5285812379517916984)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\r\n-- documentation, see http://haskell.org/cabal/users-guide/\r\n\r\n-- The name of the package.\r\nname: hblas\r\n\r\n-- The package version. See the Haskell package versioning policy (PVP)"
(Word64 -> Word64 -> MD5
Fingerprint Word64
11850020631622781099 Word64
11956481969231030830)
(Word64 -> Word64 -> MD5
Fingerprint Word64
13702868780337762025 Word64
13383526367149067158)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial hblas.cabal generated by cabal init. For further\n-- documentation, see http://haskell.org/cabal/users-guide/\n\n-- The name of the package.\nname: hblas\n\n-- The package version. See the Haskell package versioning policy (PVP)\n-- fo"
(Word64 -> Word64 -> MD5
Fingerprint Word64
13690322768477779172 Word64
19704059263540994)
(Word64 -> Word64 -> MD5
Fingerprint Word64
11189374824645442376 Word64
8363528115442591078)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"&&!" ByteString
"&& !")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: brainheck\nversion: 0.1.0.2\nsynopsis: Brainh*ck interpreter in haskell\ndescription: Brainh*ck interpreter written in haskell and taking advantage of many prominent libraries\nhomepage: https://gi"
(Word64 -> Word64 -> MD5
Fingerprint Word64
6910727116443152200 Word64
15401634478524888973)
(Word64 -> Word64 -> MD5
Fingerprint Word64
16551412117098094368 Word64
16260377389127603629)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: brainheck\r\nversion: 0.1.0.2\r\nx-revision: 1\r\nsynopsis: Brainh*ck interpreter in haskell\r\ndescription: Brainh*ck interpreter written in haskell and taking advantage of many prominent libraries\r\nhomepage: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
14320987921316832277 Word64
10031098243571536929)
(Word64 -> Word64 -> MD5
Fingerprint Word64
7959395602414037224 Word64
13279941216182213050)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: brainheck\r\nversion: 0.1.0.2\r\nx-revision: 2\r\nsynopsis: Brainh*ck interpreter in haskell\r\ndescription: Brainh*ck interpreter written in haskell and taking advantage of many prominent libraries\r\nhomepage: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
3809078390223299128 Word64
10796026010775813741)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1127231189459220796 Word64
12088367524333209349)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: brainheck\r\nversion: 0.1.0.2\r\nx-revision: 3\r\nsynopsis: Brainh*ck interpreter in haskell\r\ndescription: Brainh*ck interpreter written in haskell and taking advantage of many prominent libraries\r\nhomepage: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
13860013038089410950 Word64
12479824176801390651)
(Word64 -> Word64 -> MD5
Fingerprint Word64
4687484721703340391 Word64
8013395164515771785)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\nversion: 0.1.0.1\nsynopsis: Get word counts and distributions\ndescription: A command line tool to compute the word distribution from various types of document, converting to text with pandoc.\nho"
(Word64 -> Word64 -> MD5
Fingerprint Word64
16215911397419608203 Word64
15594928482155652475)
(Word64 -> Word64 -> MD5
Fingerprint Word64
15120681510314491047 Word64
2666192399775157359)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\r\nversion: 0.1.0.1\r\nx-revision: 1\r\nsynopsis: Get word counts and distributions\r\ndescription: A command line tool to compute the word distribution from various types of document, converting to te"
(Word64 -> Word64 -> MD5
Fingerprint Word64
16593139224723441188 Word64
4052919014346212001)
(Word64 -> Word64 -> MD5
Fingerprint Word64
3577381082410411593 Word64
11481899387780544641)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\nversion: 0.1.0.2\nsynopsis: Get word counts and distributions\ndescription: A command line tool to compute the word distribution from various types of document, converting to text with pandoc.\nho"
(Word64 -> Word64 -> MD5
Fingerprint Word64
9321301260802539374 Word64
1316392715016096607)
(Word64 -> Word64 -> MD5
Fingerprint Word64
3784628652257760949 Word64
12662640594755291035)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\r\nversion: 0.1.0.2\r\nx-revision: 1\r\nsynopsis: Get word counts and distributions\r\ndescription: A command line tool to compute the word distribution from various types of document, converting to te"
(Word64 -> Word64 -> MD5
Fingerprint Word64
2546901804824433337 Word64
2059732715322561176)
(Word64 -> Word64 -> MD5
Fingerprint Word64
8082068680348326500 Word64
615008613291421947)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\nversion: 0.1.0.3\nsynopsis: Get word counts and distributions\ndescription: A command line tool to compute the word distribution from various types of document, converting to text with pandoc.\nho"
(Word64 -> Word64 -> MD5
Fingerprint Word64
2282380737467965407 Word64
12457554753171662424)
(Word64 -> Word64 -> MD5
Fingerprint Word64
17324757216926991616 Word64
17172911843227482125)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: wordchoice\r\nversion: 0.1.0.3\r\nx-revision: 1\r\nsynopsis: Get word counts and distributions\r\ndescription: A command line tool to compute the word distribution from various types of document, converting to te"
(Word64 -> Word64 -> MD5
Fingerprint Word64
12907988890480595481 Word64
11078473638628359710)
(Word64 -> Word64 -> MD5
Fingerprint Word64
13246185333368731848 Word64
4663060731847518614)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(llvm-fast)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: hw-prim-bits\nversion: 0.1.0.0\nsynopsis: Primitive support for bit manipulation\ndescription: Please see README.md\nhomepage: https://github.com/githubuser/hw-prim-bits#readme\nlicense: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
12386777729082870356 Word64
17414156731912743711)
(Word64 -> Word64 -> MD5
Fingerprint Word64
3452290353395041602 Word64
14102887112483033720)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(sse42)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: hw-prim-bits\nversion: 0.1.0.1\nsynopsis: Primitive support for bit manipulation\ndescription: Please see README.md\nhomepage: https://github.com/githubuser/hw-prim-bits#readme\nlicen"
(Word64 -> Word64 -> MD5
Fingerprint Word64
6870520675313101180 Word64
14553457351296240636)
(Word64 -> Word64 -> MD5
Fingerprint Word64
12481021059537696455 Word64
14711088786769892762)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"flag(sse42)" ByteString
"False")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: Sit\nversion: 0.2017.02.26\nbuild-type: Simple\ncabal-version: >= 1.8\nlicense: OtherLicense\nlicense-file: LICENSE\nauthor: Anonymous\nmaintainer: Anonymous\nhomepage: NONE\ncategory: Dependent"
(Word64 -> Word64 -> MD5
Fingerprint Word64
8458530898096910998 Word64
3228538743646501413)
(Word64 -> Word64 -> MD5
Fingerprint Word64
14470502514907936793 Word64
17514354054641875371)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"0.2017.02.26" ByteString
"0.2017.2.26")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: Sit\nversion: 0.2017.05.01\nbuild-type: Simple\ncabal-version: >= 1.8\nlicense: OtherLicense\nlicense-file: LICENSE\nauthor: Andreas Abel <andreas.abel@gu.se>\nmaintainer: Andreas Abel <andreas.abel@gu.se>\n"
(Word64 -> Word64 -> MD5
Fingerprint Word64
1450130849535097473 Word64
11742099607098860444)
(Word64 -> Word64 -> MD5
Fingerprint Word64
16679762943850814021 Word64
4253724355613883542)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"0.2017.05.01" ByteString
"0.2017.5.1")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: Sit\nversion: 0.2017.05.02\nbuild-type: Simple\ncabal-version: >= 1.8\nlicense: OtherLicense\nlicense-file: LICENSE\nauthor: Andreas Abel <andreas.abel@gu.se>\nmaintainer: Andreas Abel <andreas.abel@gu.se>\n"
(Word64 -> Word64 -> MD5
Fingerprint Word64
297248532398492441 Word64
17322625167861324800)
(Word64 -> Word64 -> MD5
Fingerprint Word64
634812045126693280 Word64
1755581866539318862)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"0.2017.05.02" ByteString
"0.2017.5.2")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: Sit\nversion: 0.2017.5.02\nx-revision: 1\n-- x-revision:1 see https://github.com/haskell-infra/hackage-trustees/issues/128\nbuild-type: Simple\ncabal-version: >= 1.8\nlicense: OtherLicense\nlicense-file: LICENSE\nauthor: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
3697869560530373941 Word64
3942982281026987312)
(Word64 -> Word64 -> MD5
Fingerprint Word64
14344526114710295386 Word64
16386400353475114712)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"0.2017.5.02" ByteString
"0.2017.5.2")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: MiniAgda\nversion: 0.2017.02.18\nbuild-type: Simple\ncabal-version: >= 1.22\nlicense: OtherLicense\nlicense-file: LICENSE\nauthor: Andreas Abel and Karl Mehltretter\nmaintainer: Andreas Abel <andreas.abel@i"
(Word64 -> Word64 -> MD5
Fingerprint Word64
17167128953451088679 Word64
4300350537748753465)
(Word64 -> Word64 -> MD5
Fingerprint Word64
12402236925293025673 Word64
7715084875284020606)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"0.2017.02.18" ByteString
"0.2017.2.18")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"cabal-version:\n 2.0\nname:\n fast-downward\nversion:\n 0.1.0.0\nbuild-type:\n Simple\nsynopsis:\n Solve classical planning problems (STRIPS/SAS+) using Haskell & Fast Downward.\ndescription:\n @fast-downward@ is a library for modelling classical planning probl"
(Word64 -> Word64 -> MD5
Fingerprint Word64
11256076039027887363 Word64
6867903407496243216)
(Word64 -> Word64 -> MD5
Fingerprint Word64
12159816716813155434 Word64
5278015399212299853)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"1.2.03.0" ByteString
"1.2.3.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"cabal-version:\r\n 2.0\r\nname:\r\n fast-downward\r\nversion:\r\n 0.1.0.0\r\nx-revision: \r\n 1\r\nbuild-type:\r\n Simple\r\nsynopsis:\r\n Solve classical planning problems (STRIPS/SAS+) using Haskell & Fast Downward.\r\ndescription:\r\n @fast-downward@ is a library for mode"
(Word64 -> Word64 -> MD5
Fingerprint Word64
9216193973149680231 Word64
893446343655828508)
(Word64 -> Word64 -> MD5
Fingerprint Word64
10020169545407746427 Word64
1828336750379510675)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"1.2.03.0" ByteString
"1.2.3.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"cabal-version:\n 2.0\nname:\n fast-downward\nversion:\n 0.1.0.1\nbuild-type:\n Simple\nsynopsis:\n Solve classical planning problems (STRIPS/SAS+) using Haskell & Fast Downward.\ndescription:\n @fast-downward@ is a library for modelling classical planning probl"
(Word64 -> Word64 -> MD5
Fingerprint Word64
9899886602574848632 Word64
5980433644983783334)
(Word64 -> Word64 -> MD5
Fingerprint Word64
12007469255857289958 Word64
8321466548645225439)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"1.2.03.0" ByteString
"1.2.3.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"cabal-version:\n 2.0\nname:\n fast-downward\nversion:\n 0.1.1.0\nbuild-type:\n Simple\nsynopsis:\n Solve classical planning problems (STRIPS/SAS+) using Haskell & Fast Downward.\ndescription:\n @fast-downward@ is a library for modelling classical planning probl"
(Word64 -> Word64 -> MD5
Fingerprint Word64
12694656661460787751 Word64
1902242956706735615)
(Word64 -> Word64 -> MD5
Fingerprint Word64
15433152131513403849 Word64
2284712791516353264)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"1.2.03.0" ByteString
"1.2.3.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: SGplus\nVersion: 1.1\nSynopsis: (updated) Small geometry library for dealing with vectors and collision detection\nLicense: BSD3\nLicense-file: LICENSE\nAuthor: Neil Brown\nMaintainer: "
(Word64 -> Word64 -> MD5
Fingerprint Word64
17735649550442248029 Word64
11493772714725351354)
(Word64 -> Word64 -> MD5
Fingerprint Word64
9565458801063261772 Word64
15955773698774721052)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"1000000000" ByteString
"100000000")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial control-dotdotdot.cabal generated by cabal init. For further \n-- documentation, see http://haskell.org/cabal/users-guide/\n\nname: control-dotdotdot\nversion: 0.1.0.1\nsynopsis: Haskell operator\n "
(Word64 -> Word64 -> MD5
Fingerprint Word64
1514257173776509942 Word64
7756050823377346485)
(Word64 -> Word64 -> MD5
Fingerprint Word64
14082092642045505999 Word64
18415918653404121035)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"9223372036854775807" ByteString
"5")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: data-foldapp\r\nversion: 0.1.1.0\r\nsynopsis: Fold function applications. Framework for variadic functions.\r\ndescription: Fold function applications. Framework for variadic functions.\r\nhomepage: ht"
(Word64 -> Word64 -> MD5
Fingerprint Word64
4511234156311243251 Word64
11701153011544112556)
(Word64 -> Word64 -> MD5
Fingerprint Word64
11820542702491924189 Word64
4902231447612406724)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"9223372036854775807" ByteString
"999" (ByteString -> ByteString)
-> (ByteString -> ByteString) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"9223372036854775807" ByteString
"999")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"-- Initial data-list-zigzag.cabal generated by cabal init. For further \r\n-- documentation, see http://haskell.org/cabal/users-guide/\r\n\r\nname: data-list-zigzag\r\nversion: 0.1.1.1\r\nsynopsis: A list but with a balanced en"
(Word64 -> Word64 -> MD5
Fingerprint Word64
12475837388692175691 Word64
18053834261188158945)
(Word64 -> Word64 -> MD5
Fingerprint Word64
16279938253437334942 Word64
15753349540193002309)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"9223372036854775807" ByteString
"999")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"Name: nat\nVersion: 0.1\nDescription: Implementation of natural numbers and integers by a binary\n representation. The implementation is supposed to be lazy and\n "
(Word64 -> Word64 -> MD5
Fingerprint Word64
9222512268705577108 Word64
13085311382746579495)
(Word64 -> Word64 -> MD5
Fingerprint Word64
17468921266614378430 Word64
13221316288008291892)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"\xf6" ByteString
"\xc3\xb6")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: streaming-bracketed\nversion: 0.1.0.0\nsynopsis: A resource management decorator for \"streaming\". \ndescription: This package provides a decorator for the Stream type from\n the \"st"
(Word64 -> Word64 -> MD5
Fingerprint Word64
14670044663153191927 Word64
1427497586294143829)
(Word64 -> Word64 -> MD5
Fingerprint Word64
9233007756654759985 Word64
6571998449003682006)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"cabal-version: 2" ByteString
"cabal-version: 2.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: streaming-bracketed\nversion: 0.1.0.1\nsynopsis: A resource management decorator for \"streaming\". \ndescription: This package provides a decorator for the Stream type from\n \"stream"
(Word64 -> Word64 -> MD5
Fingerprint Word64
7298738862909203815 Word64
10141693276062967842)
(Word64 -> Word64 -> MD5
Fingerprint Word64
1349949738792220441 Word64
3593683359695349293)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"cabal-version: 2" ByteString
"cabal-version: 2.0")
, ByteString
-> MD5
-> MD5
-> (ByteString -> ByteString)
-> ((ByteString, MD5), (MD5, ByteString -> ByteString))
forall a b a b. a -> b -> a -> b -> ((a, b), (a, b))
mk ByteString
"name: zsyntax\nversion: 0.2.0.0\ndescription: An automated theorem prover for Zsyntax, a\n logical calculus for molecular biology inspired by linear logic,\n that can be used to automatically verify biological\n"
(Word64 -> Word64 -> MD5
Fingerprint Word64
17812331267506881875 Word64
3005293725141563863)
(Word64 -> Word64 -> MD5
Fingerprint Word64
3445957263137759540 Word64
12472369104312474458)
(ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
"cabal-version: 2" ByteString
"cabal-version: 2.0")
]
where
mk :: a -> b -> a -> b -> ((a, b), (a, b))
mk a
a b
b a
c b
d = ((a
a, b
b), (a
c, b
d))
_makePatchKey :: FilePath -> (BS.ByteString -> BS.ByteString) -> NoCallStackIO ()
_makePatchKey :: FilePath -> (ByteString -> ByteString) -> NoCallStackIO ()
_makePatchKey FilePath
fp ByteString -> ByteString
transform = do
ByteString
contents <- FilePath -> IO ByteString
BS.readFile FilePath
fp
let output :: ByteString
output = ByteString -> ByteString
transform ByteString
contents
let Fingerprint Word64
hi Word64
lo = ByteString -> MD5
md5 ByteString
contents
let Fingerprint Word64
hi' Word64
lo' = ByteString -> MD5
md5 ByteString
output
FilePath -> NoCallStackIO ()
putStrLn
(FilePath -> NoCallStackIO ()) -> FilePath -> NoCallStackIO ()
forall a b. (a -> b) -> a -> b
$ FilePath -> ShowS
showString FilePath
" , mk "
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ShowS
forall a. Show a => a -> ShowS
shows (Int -> ByteString -> ByteString
BS.take Int
256 ByteString
contents)
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> ShowS
showString FilePath
"\n (Fingerprint "
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> ShowS
forall a. Show a => a -> ShowS
shows Word64
hi
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> ShowS
showString FilePath
" "
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> ShowS
forall a. Show a => a -> ShowS
shows Word64
lo
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> ShowS
showString FilePath
")\n (Fingerprint "
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> ShowS
forall a. Show a => a -> ShowS
shows Word64
hi'
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> ShowS
showString FilePath
" "
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> ShowS
forall a. Show a => a -> ShowS
shows Word64
lo'
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> ShowS
showString FilePath
")"
ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$ FilePath
""
bsRemove
:: BS.ByteString
-> BS.ByteString -> BS.ByteString
bsRemove :: ByteString -> ByteString -> ByteString
bsRemove ByteString
needle ByteString
haystack = case ByteString -> ByteString -> (ByteString, ByteString)
BS.breakSubstring ByteString
needle ByteString
haystack of
(ByteString
h, ByteString
t) -> ByteString -> ByteString -> ByteString
BS.append ByteString
h (Int -> ByteString -> ByteString
BS.drop (ByteString -> Int
BS.length ByteString
needle) ByteString
t)
bsReplace
:: BS.ByteString
-> BS.ByteString
-> BS.ByteString -> BS.ByteString
bsReplace :: ByteString -> ByteString -> ByteString -> ByteString
bsReplace ByteString
needle ByteString
repl ByteString
haystack = case ByteString -> ByteString -> (ByteString, ByteString)
BS.breakSubstring ByteString
needle ByteString
haystack of
(ByteString
h, ByteString
t)
| Bool -> Bool
not (ByteString -> Bool
BS.null ByteString
t) -> ByteString -> ByteString -> ByteString
BS.append ByteString
h (ByteString -> ByteString -> ByteString
BS.append ByteString
repl (Int -> ByteString -> ByteString
BS.drop (ByteString -> Int
BS.length ByteString
needle) ByteString
t))
| Bool
otherwise -> ByteString
haystack
bsRemoveStarting
:: BS.ByteString
-> BS.ByteString -> BS.ByteString
bsRemoveStarting :: ByteString -> ByteString -> ByteString
bsRemoveStarting ByteString
needle ByteString
haystack = case ByteString -> ByteString -> (ByteString, ByteString)
BS.breakSubstring ByteString
needle ByteString
haystack of
(ByteString
h, ByteString
_) -> ByteString
h