{-      !"#$%&'()*+,-./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 directoryFold 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  monadShow  is relative or absolute     2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNoneFind .cabal file,Call cabal library defaultMain like Setup.hs0Cabal library defaultMain with sub-command clean4Cabal library defaultMain with sub-command configure0Cabal library defaultMain with sub-command sdist0Cabal library defaultMain with sub-command build2Cabal library defaultMain with sub-command install3Cabal 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 #, Generate #- type from package name and version using  -/Make debian short name from package name using  . Package name string with version/Package archive basename0Package archive pathname1+Debian library binary package names for GHC2,Debian library document package name for GHC3$Debian library package names for GHC !"#$%&'()*+,Rule flag to generate namesHackage name stringVersion of hackageResult hackage meta info-Rule flag to generate name)Debian source name or Hackage name stringODebian source package name and short name like ("haskell-src-exts", "src-exts")./0123 !"#$%&'()*+,-./0123$&%'#()*+, "!-./0123 "!#$%&'()*+,-./01232014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred4&Debian source package type for Haskell5"Type for debian control meta-data.:Debian package types>-Debian source package type, name with version?Version type for Debian@)Make deebian version from hackage versionAVersion without debian revisionBIs debian-native or notC"Try to read debian package versionDMake >ESource package name of >FDebian version of >GVersion without debian revisionHIs debian-native or notI Original source archive basenameJDebian native archive basenameKSource directory basenameL Try to make $ from >MTry to generate > from debian changelog stringNTake : from debian .changes file pathO$Test package type is source package.P$Test package type is binary package.Q'Parse an package entry in control file.R,Parse debian control file into package list.S# meta-info of 4T#Debian source package meta-info of 4U Generate 44 type from debian package name and version using  V Generate 4/ with hackage name and debian package meta-info=456789:;<=>?@ABCDEFGHIJKLM!dpkg-parsechangelog result stringSource structureNOPQRSTUHackage name stringVersion of hackageDebian revision StringResult structureVHackage name stringDebian package meta infoResult#456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV#?@CAB>DEFGHIJKLM:=<;NOP56789QR4STUV2456789:=<;>?@ABCDEFGHIJKLMNOPQRSTUV2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred7 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-InferredWBuild mode, all or binary only]9Run command without shell and get standard output string.^Run command without shell_Run command with shell`Change directory actiona'Action to get current working directorybCreate directory if missingcRename directory action. e.g. renameDirectory from todRename file action. e.g. renameFile from toeConfirm filepath using ls commandfUnpack .tar.gz under directory.g#Unpack .tar.gz under archive place.h3Pack directory into .tar.gz under working directoryiAPack directory into same location .tar.gz under working directoryj$Run action under specified directoryk Just call  cabal-debian commandlCall  cabal-debian" command under specified directorymQuery debian package versionn1Read debian changelog file and try to parse into >oRead debian control filepCall debuild5 under specified directory, with command line optionsqJust run debi with root userr9Install packages under specified source package directorysInstall build-dependst7Infer all build mode list from debian control file datauBuild package using debuild under specified directoryvtBuild package with specified mode list. Calculated mode list from control is used when not specified build modes.wClean and build package using debuild under specified directoryxDRemove ghc library packages under specified source package directory&WXYZ[\]^_`abcdefghijklmnopqrstuvwx"WXYZ[\]^_`abcdefghijklmnopqrstuvwx"`abcdefghiklmnopqrsW\[ZYXtuvwxj]^_!W\[ZYX]^_`abcdefghijklmnopqrstuvwx2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNoneyRun Bulid" action under specified directory.zRun  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 files1On the fly setup of source directory and archive.yz{|}~May specify revision string*Optional arguments of cabal-debian commandGenerated debian-dir pathHackge name stringMay specify revision string*Optional arguments of cabal-debian command/Result package informations of generated sourceMay specify revision string*Optional arguments of cabal-debian command/Result package informations of generated sourceyz{|}~}~yz{|yz{|}~2014-2015 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNoneQ WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}&~ ,-=Fdebian-build-0.9.0.0Debian.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 askBuildDirfindDescriptionFilesetupCmdclean configuresdistbuildinstallregisterNameRuleSimpleSuggestHackageHackageVersionmkHackageVersion'mkHackageVersionhackageVersionNumbers mkHackage hackageNamehackageVersiondebianShortNamemkHackageDefaultdebianNamesFromSourceNamehackageLongNamehackageArchiveNamehackageArchiveghcLibraryBinPackagesghcLibraryDocPackageghcLibraryPackagesHaskellPackageControl 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_traceIOtprintsetupdefaultHackageSrcPrefixdistDir$fReadHackageVersion$fShowHackageVersionDebianNonNative DebianNativeParsersatisfy_lookeof runParseranyCharcharnotCharspacedigitintstringdebianNativeVersiondebianNonNativeVersion parseVersion'parseDebianVersion_testParseDebianVersion readMaybe'parseColonLinepackagesPartition$fReadDebianVersion$fShowDebianVersion handleExit renameMsgdebuild'hasBinaryBuildModedebianDirName' withBuildDirrsyncGenOrigSourceDircabalGenArchivecabalGenOrigArchivecabalAutogenDebianDirfindDebianChangeLogfindCabalDescription