ú΁éwӍ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred=Monad type with build base directory and build configuration.Build configuration typeSpecify build dirName of debian directory-Exclude directories to setup source directory'Type to specify build working directory'Type to specify base directory filepathAction type with trace flagRun  monad  bracket for  monad  bracket_ for  monad 0Command string trace print along with trace flag /Output string trace print along with trace flag Put log stinrg with flush.;Use relative path from base-dir as build workding directory-Use absolute path as build workding directoryFold build dirDefault configuration Lift from  monad into monad with  configuration.Run  configuration monad bracket for  monad bracket_ for  monadGet base directory in  monadGet build configuration in  monadGet build working directory in  monadŽShow  is relative or absolute ‘’“ ” Ž  ‘’“ ” Ž2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNone Find .cabal fileParse .cabal file%Hackage name and version string from •Hackage name string from •Hackage version string from •,Call cabal library defaultMain like Setup.hs0Cabal library defaultMain with sub-command clean4Cabal library defaultMain with sub-command configure 0Cabal library defaultMain with sub-command sdist!0Cabal library defaultMain with sub-command build"2Cabal library defaultMain with sub-command install#3Cabal library defaultMain with sub-command register–— !"#  !"#  !"#–— !"#2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred$Debian short name generate rule';Hackage name and version type with debian short name. e.g. src-ext.(Hackage version type)Make (*Make (+ Extract hackage version numbers.,Make '-Get package name of '.Get version of '/Get debian short name of '0 Generate '- type from package name and version using $1/Make debian short name from package name using $2 Package name string with version3Package archive basename4Package archive pathname5+Debian library binary package names for GHC6,Debian library document package name for GHC7$Debian library package names for GHC$%&'˜(™)*+,-./0Rule flag to generate namesHackage name stringVersion of hackageResult hackage meta infoš1Rule flag to generate name)Debian source name or Hackage name stringODebian source package name and short name like ("haskell-src-exts", "src-exts")23›4567œ$%&'()*+,-./01234567(*)+',-./0$&%1234567$&%'˜(™)*+,-./0š123›4567œ2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred8&Debian source package type for Haskell9"Type for debian control meta-data.>Debian package typesB-Debian source package type, name with versionCVersion type for DebianD)Make deebian version from hackage versionEVersion without debian revisionFIs debian-native or notG"Try to read debian package versionHMake BISource package name of BJDebian version of BKVersion without debian revisionLIs debian-native or notM Original source archive basenameNDebian native archive basenameOSource directory basenameP Try to make ( from BQTry to generate B from debian changelog stringRTake > from debian .changes file pathS$Test package type is source package.T$Test package type is binary package.U'Parse an package entry in control file.V,Parse debian control file into package list.W' meta-info of 8X#Debian source package meta-info of 8Y Generate 84 type from debian package name and version using $Z Generate 8/ with hackage name and debian package meta-info=8ž9:;<=>?@ABŸC Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻDEF°ą˛łGHIJKLMNOP´Q!dpkg-parsechangelog result stringSource structureRSTUľVWXYHackage name stringVersion of hackageDebian revision StringResult structureZHackage name stringDebian package meta infoResultśˇ#89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ#CDGEFBHIJKLMNOPQ>A@?RST9:;<=UV8WXYZ28ž9:;<=>A@?BŸCĄ ˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻDEF°ą˛łGHIJKLMNOP´QRSTUľVWXYZśˇ2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred7$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred[Build mode, all or binary onlya9Run command without shell and get standard output string.bRun command without shellcRun command with shelldChange directory actione'Action to get current working directoryfCreate directory if missinggRename directory action. e.g. renameDirectory from tohRename file action. e.g. renameFile from toiConfirm filepath using ls commandjUnpack .tar.gz under directory.k#Unpack .tar.gz under archive place.l3Pack directory into .tar.gz under working directorymAPack directory into same location .tar.gz under working directoryn$Run action under specified directoryo Just call  cabal-debian commandpCall  cabal-debian" command under specified directoryqQuery debian package versionr1Read debian changelog file and try to parse into BsRead debian control filetCall debuild5 under specified directory, with command line optionsuJust run debi with root userv9Install packages under specified source package directorywInstall build-dependsx7Infer all build mode list from debian control file datayBuild package using debuild under specified directoryztBuild package with specified mode list. Calculated mode list from control is used when not specified build modes.{Clean and build package using debuild under specified directory|DRemove ghc library packages under specified source package directory([\]^_`¸šabcdefşghijklmnopqrsťźtuvwx˝yz{|"[\]^_`abcdefghijklmnopqrstuvwxyz{|"defghijklmopqrstuvw[`_^]\xyz{|nabc#[`_^]\¸šabcdefşghijklmnopqrsťźtuvwx˝yz{|2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNone}Run Bulid" action under specified directory.~Run  action under base-directory.Take build-directory from  action context.€Remove build-directory.ž Take debian-directory name from  action context.'Take original source archive name from  action context.‚,Take debian native source archive name from  action context.ƒTake source directory from  action context.„MAction to copy debian directory from base-directory into specified directory.…XSetup source directory and original source archive under build-directory using rsync.†]Setup native source directory and native source archive under build-directory using rsync.‡1Setup debian source directory and source archive.ˆ8Setup original source directory and archive using Cabal.‰/Setup source directory and archive using Cabal.Š@Setup source directory and archive using Cabal and cabal-debian.‹Find debian .changes filesŒ1On the fly setup of source directory and archive.}~ż€ž‚ƒ„Ŕ…†‡Áˆ‰ĂŠÄ‹ĹŒ}~€‚ƒ„…†‡ˆ‰Š‹Œ‚ƒ}~€‹„…†‡ˆ‰ŠŒ}~ż€ž‚ƒ„Ŕ…†‡Áˆ‰ĂŠÄ‹ĹŒ2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNoneR  "#[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒĆ      !"#$%&'()*+,-./012345$%678#9:;<=>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’ “”•–—˜™š›01œžŸ>G Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆdebian-build-0.7.2.2Debian.Package.Build.MonadDebian.Package.Build.CabalDebian.Package.Data.HackageDebian.Package.Data.PackagesDebian.Package.Build.CommandDebian.Package.Build.SequenceDebian.Package.DataDebian.Package.BuildBuildConfigbuildDir debianDirNamesourceExcludesBuildDirBaseDirTracerunTrace bracketTrace bracketTrace_ traceCommandtraceOutputLogbuildDirRelativebuildDirAbsolute defaultConfig liftTracerunBuild bracketBuild bracketBuild_ askBaseDir askConfig askBuildDirfindDescriptionFileparsePackageDescriptionhackageLongName hackageNamehackageVersionsetupCmdclean configuresdistbuildinstallregisterNameRuleSimpleSuggestHackageHackageVersionmkHackageVersion'mkHackageVersionhackageVersionNumbers mkHackagedebianShortNamemkHackageDefaultdebianNamesFromSourceNamehackageArchiveNamehackageArchiveghcLibraryBinPackagesghcLibraryDocPackageghcLibraryPackagesHaskellPackageControl controlSource controlArch controlAll PackageType PackageSource PackageAll PackageArchSource DebianVersionversionFromHackageVersion origVersion' isNative'readDebianVersionmkSource sourceNameversion origVersionisNativeorigArchiveNamenativeArchiveName sourceDirNamederiveHackageVersionparseChangeLogtakeChangesTypeisSourcePackageisBinaryPackageparseControlEntry parseControlhackagepackagehaskellPackageDefaulthaskellPackageFromPackage BuildModeIndepDepSrcBinAll readProcess' rawSystem'system'chdirpwdcreateDirectoryIfMissingrenameDirectory renameFile confirmPath unpackInDirunpack packInDir' packInDirwithCurrentDir' cabalDebian' cabalDebianpackageVersiondpkgParseChangeLogdpkgParseControldebuilddebi'debiaptGetBuildDependsmodeListFromControl buildPackagerebuildremoveGhcLibrarywithCurrentDirwithBaseCurrentDir getBuildDirremoveBuildDir origArchive nativeArchive sourceDir copyDebianDirrsyncGenOrigSourcesrsyncGenNativeSourcesrsyncGenSourcescabalGenOrigSourcescabalGenSourcescabalAutogenSourcesfindDebianChanges genSources unBuildDir$fShowBuildDir readerBracket toBracket_traceIOtprintCabal-1.18.1.3Distribution.PackageDescriptionPackageDescription _testDotCabalsetupdefaultHackageSrcPrefixdistDir$fReadHackageVersion$fShowHackageVersionDebianNonNative DebianNativeParsersatisfy_lookeof runParseranyCharcharnotCharspacedigitintstringdebianNativeVersiondebianNonNativeVersion parseVersion'parseDebianVersion_testParseDebianVersion readMaybe'parseColonLinepackagesPartition$fReadDebianVersion$fShowDebianVersion splitCommand handleExit renameMsgrundebuild'hasBinaryBuildModedebianDirName' withBuildDirrsyncGenOrigSourceDircabalGenArchivecabalGenOrigArchivecabalAutogenDebianDirfindDebianChangeLogfindCabalDescription