śĪyłpŒ‚      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€2014 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 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 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 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred8&Debian source package type for Haskell9Debian .changes file types=-Debian source package type, name with version>Version type for Debian?)Make deebian version from hackage version@Version without debian revisionAIs debian-native or notB"Try to read debian package versionCMake =DSource package name of =EDebian version of =FVersion without debian revisionGIs debian-native or notH Original source archive basenameIDebian native archive basenameJSource directory basenameK Try to make ( from =LTry to generate = from debian changelog stringMTake 9 from debian .changes file pathN)Test changes file type is source package.O)Test changes file type is binary package.P' meta-info of 8Q#Debian source package meta-info of 8R Generate 84 type from debian package name and version using $S Generate 8/ with hackage name and debian package meta-info58“9:;<=”>•–—˜™š›œžŸ ”¢£¤?@A„¦§ØBCDEFGHIJK©L!dpkg-parsechangelog result stringSource structureMNOPQRHackage name stringVersion of hackageDebian revision StringResult structureSHackage name stringDebian package meta infoResultŖ«89:;<=>?@ABCDEFGHIJKLMNOPQRS>?B@A=CDEFGHIJKL9<;:MNO8PQRS.8“9<;:=”>–•—˜™š›œžŸ ”¢£¤?@A„¦§ØBCDEFGHIJK©LMNOPQRSŖ«2014 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-Inferred0$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS2014 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportable Safe-InferredTBuild mode, all or binary onlyZ9Run command without shell and get standard output string.[Run command without shell\Run command with shell]Change directory action^'Action to get current working directory_Create directory if missing`Rename directory action. e.g. renameDirectory from toaRename file action. e.g. renameFile from tobConfirm filepath using ls commandcUnpack .tar.gz under directory.d#Unpack .tar.gz under archive place.e3Pack directory into .tar.gz under working directoryfAPack directory into same location .tar.gz under working directoryg$Run action under specified directoryh Just call  cabal-debian commandiCall  cabal-debian" command under specified directoryjQuery debian package versionk1Read debian changelog file and try to parse into =lCall debuild5 under specified directory, with command line optionsmJust run debi with root usern9Install packages under specified source package directoryoBuild package using debuild under specified directorypClean and build package using debuild under specified directoryqDRemove ghc library packages under specified source package directory#TUVWXY¬­Z[\]^_®`abcdefghijkưlmnopqTUVWXYZ[\]^_`abcdefghijklmnopq]^_`abcdefhijklmnTYXWVUopqgZ[\TYXWVU¬­Z[\]^_®`abcdefghijkưlmnopq2014 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNonerRun Bulid" action under specified directory.sRun  action under base-directory.tTake build-directory from  action context.uRemove build-directory.± Take debian-directory name from  action context.v'Take original source archive name from  action context.w,Take debian native source archive name from  action context.xTake source directory from  action context.yMAction to copy debian directory from base-directory into specified directory.zXSetup 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.rst²u±vwxy³z{|“µ}~¶·€ørstuvwxyz{|}~€vwxrstu€yz{|}~rst²u±vwxy³z{|“µ}~¶·€ø2014 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalportableNoneO  !"#TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€¹      !"#$%&'()*+,-./012345$%678#9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰ Š‹ŒŽ‘’01“”•–>C—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»debian-build-0.5.0.2Debian.Package.Build.MonadDebian.Package.Build.CabalDebian.Package.Data.HackageDebian.Package.Data.SourceDebian.Package.Build.CommandDebian.Package.Build.SequenceDebian.Package.DataDebian.Package.BuildBuildConfigbuildDir debianDirNamesourceExcludesBuildDirBaseDirTracerunTrace bracketTrace bracketTrace_ traceCommandtraceOutputLogbuildDirRelativebuildDirAbsolute defaultConfig liftTracerunBuild bracketBuild bracketBuild_ askBaseDir askConfig askBuildDirfindDescriptionFileparsePackageDescriptionhackageLongName hackageNamehackageVersionsetupCmdclean configuresdistbuildinstallregisterNameRuleSimpleSuggestHackageHackageVersionmkHackageVersion'mkHackageVersionhackageVersionNumbers mkHackagedebianShortNamemkHackageDefaultdebianNamesFromSourceNamehackageArchiveNamehackageArchiveghcLibraryBinPackagesghcLibraryDocPackageghcLibraryPackagesHaskellPackage ChangesType ChangesSource ChangesAll ChangesArchSource DebianVersionversionFromHackageVersion origVersion' isNative'readDebianVersionmkSource sourceNameversion origVersionisNativeorigArchiveNamenativeArchiveName sourceDirNamederiveHackageVersionparseChangeLogtakeChangesTypeisSourceChangesisBinaryChangeshackagepackagehaskellPackageDefaulthaskellPackageFromPackage BuildModeIndepDepSrcBinAll readProcess' rawSystem'system'chdirpwdcreateDirectoryIfMissingrenameDirectory renameFile confirmPath unpackInDirunpack packInDir' packInDirwithCurrentDir' cabalDebian' cabalDebianpackageVersiondpkgParseChangeLogdebuilddebi'debi 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' parseLine$fReadDebianVersion$fShowDebianVersion splitCommand handleExit renameMsgrundebuild'debianDirName' withBuildDirrsyncGenOrigSourceDircabalGenArchivecabalGenOrigArchivecabalAutogenDebianDirfindDebianChangeLogfindCabalDescription