sJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI  Safe-Infered JKLMNOPQRST JKLMNOPQRJLKMMNOPQRST Safe-Infered:Convert a string to a debian version number. May throw an D exception if the string is unparsable -- but I am not sure if that > can currently happen. Are there any invalid version strings? - Perhaps ones with underscore, or something? ASplit a DebianVersion into its three components: epoch, version, @ revision. It is not safe to use the parsed version number for @ this because you will lose information, such as leading zeros.  UVWXYZ    UVWXYZ Safe-Infered[[ Safe-Infered\\ Safe-Infered +The function we want to pass a FilePath to &The text that the file should contain  The function's return value     Safe-Infered     Safe-Infered4If the URI type could be read and showed this wouldn't be necessary. ]3^_`abcdefghijklmnopqrstuvwxyz{|}~] Safe-Infered A package'9s subsection is only evident in its control information, C packages from different subsections all reside in the same index. ;A section of a repository such as main, contrib, non-free, > restricted. The indexes for a section are located below the  distribution directory. AThe types of architecture that a package can have, either Source & or some type of binary architecture. CA distribution (aka release) name. This type is expected to refer D to a subdirectory of the dists directory which is at the top level  of a repository. '$Parse the value that appears in the Section field of a .changes file. # (Does this need to be unesacped?)  !"#$%&'( !"#$%&'( !"#$%&'(  !"#$%&'( Safe-Infered)>This is a name given to a combination of parts of one or more 8 releases that can be specified by a sources.list file. 4<quoteWords - similar to words, but with special handling of  double-quotes and brackets.  The handling double quotes and [] is supposed to match:  apt-0.6.44.2/apt-pkg/contrib/strutl.cc:ParseQuoteWord() !The behaviour can be defined as: ABreak the string into space seperated words ignoring spaces that  appear between "" or []). Strip trailing and leading white space > around words. Strip out double quotes, but leave the square  brackets intact. 7(parseSourceLine -- parses a source line L the argument must be a non-empty, valid source line with comments stripped  see: 6 )*+,-./0123456789)*+,-./0123456789132,-./0)*+456789 )*+,-./0132456789 Safe-Infered Safe-Infered ;; filepath is a simple wrapper function  that parses filepath using pControl <<  sourceName handle -  sourceName" is only used for error reporting =parseControlFromString  sourceName text -  sourceName" is only used for error reporting >> fieldName paragraph looks up a C in a E.  N.B.$ trailing and leading whitespace is not stripped. ??Strip the trailing and leading space and tab characters from a  string. Folded whitespace is not unfolded. This should probably - be moved to someplace more general purpose. A@NOTE: we do not strip the leading or trailing whitespace in the  name or value P6Move selected fields to the beginning of a paragraph. Q6Run a command and parse its output as a control file. R'look up the md5sum file in a paragraph % Tries several different variations:  MD5Sum:  Md5Sum:  MD5sum: :;<=>?@ABCDEFGHIJKLMNOPQR:;<=>?@ABCDEFGHIJKLMNOPQRFGHDEACB:;<=>?@IJKLMNOPQR:;<=>?@ACBDEFGHIJKLMNOPQR Safe-InferedWDA parser for debian control file. This parser handles control files D that end without a newline as well as ones that have several blank D lines at the end. It is very liberal and does not attempt validate E the fields in any way. All trailing, leading, and folded whitespace ' is preserved in the field values. See ?. &This may have bad performance issues STUVW:;<=>?@ABCDEFGHIJKLMNOPSTUVWFGHDEACBUTVS:;<=>?@WIJKLMNOP STUVW  Safe-InferedXYZ[\XYZ[\Z[\XYXYZ[\  Safe-Infered]]]]  Safe-Infered-withMethod - run |methodPath| bracketed with  openMethod/'closeMethod. |f| gets the open handle. EwhichMethodBinary - find the method executable associated with a URI  throws an exception on failure )fetch a single item, show console output  see also: getLastModified #set of callbacks which do nothing. B suitable for non-interactive usage. In the case authorization is C required, no credentials will be supplied and the download should  abort. =^_`abcdefghijklmnopqrstuvwxyz{|}~=^_`abcdefghijklmnopqrstuvwxyz{|}~B^_`abcdefghkonmlpzvtsrq{|}~{|}~wxy{uji^ _`abcdefghijkonmlpzvtsrq{|}~{|}~wxy{u Safe-Infered    Safe-Infered,A changelog is a series of ChangeLogEntries 6An entry in the list of files generated by the build. AA file generated by dpkg-buildpackage describing the result of a  package build >The full pathname of the directory holding the .changes file. 4The package name parsed from the .changes file name 6The version number parsed from the .changes file name ,The Distribution field of the .changes file 4The architecture parsed from the .changes file name "The contents of the .changes file 4The value of the Changes field of the .changes file (The parsed value of the Files attribute ;Parse a Debian Changelog and return a lazy list of entries LParse a single changelog entry, returning the entry and the remaining text. >Parse the changelog information that shows up in the .changes 1 file, i.e. a changelog entry with no signature. $$$   Safe-Infered. parse a debian relation (i.e. the value of a : Depends field). Return a parsec error or a value of type   ;Check if a version number satisfies a version requirement. EThe sort order is based on version number first, then on the kind of  relation, sorting in the order  <, <= , ==, = , >> "  Safe-Infered Safe-Infered    Safe-Infered Safe-Infered Safe-Infered Safe-Infered:;<=>?@ABCDEFGHIJKLMNOPFGHDEACB:;<=>?@IJKLMNOP Safe-Infered!:;<=>?@ABCDEFGHIJKLMNOPSTUVW!FGHDEACBUTVS:;<=>?@WIJKLMNOP Safe-Infered3function-type for a function that downloads a file A The timestamp is optional. If the local file is as new or newer 4 than the remote copy, the download may be skipped. 9A good choice might be a partially parameterized call to   BPackage indexes on the server are uncompressed or compressed with F gzip or bzip2. We do not know what will exist on the server until we D actually look. This type is used to mark the compression status of  what was actually found. #update - similar to apt-get update (Parse a possibly compressed index file. )parse an index possibly compressed file 4make a FileTuple for a file found on the local disk  returns  if the file does not exist. Dfind the Contents-* files. These are not listed in the Release file +function that will do actually downloading 7download indexes to the directory (must already exist) binary architecture sources.list -(basename of index file, compression status) A release file   Safe-InferedKcreate a map of (package name, extracted field) from a list of index files BNOTE: we could merge all the files into a single control and then D run packageMap over that. We currently do it one control file at a @ time to avoid having all the control files loaded in memory at A once. However, I am not sure that property is actually occuring ' anyway. So, this should be revisited. Gcreate a map of (package name, max version) from a single control file 4extract the version number from a control paragraph bcompare two sources.list and find all the packages in the second that trump packages in the first  see also: |trumpedMap| #calculate all the trumped packages create  trumped /- XML element and children from a trumped Map )function for downloading package indexes =cache directory to store index files in (must already exist) binary architecture sources.list a sources.list b 9a map of trumped package names to (version a, version b) package map a package map b (trumped packages (version a, version b)  Safe-Infered>Given a source package name and a binary package name, return E False if the binary package should be ignored hwen deciding whether = to build the source package. This is used to prevent build E dependency cycles from triggering unnecessary rebuilds. (This is a A replacement for the RelaxInfo type, which we temporarily rename  OldRelaxInfo.)  ESpecifies build dependencies that should be ignored during the build I decision. If the pair is (BINARY, Nothing) it means the binary package I BINARY should always be ignored when deciding whether to build. If the J pair is (BINARY, Just SOURCE) it means that binary package BINARY should < be ignored when deiciding whether to build package SOURCE.  @This type describes the build dependencies of a source package.  source package name dependency relations ;binary dependency names (is this a function of relations?) VReturn the dependency info for a source package with the given dependency relaxation. @ |According to debian policy, only the first paragraph in debian/ control can be a source package   Rhttp://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles ,Remove any dependencies that are designated "relaxed" by relaxInfo. ,Remove any dependencies that are designated "relaxed" by relaxInfo. >Given an ordering function representing the dependencies on a D list of packages, return a triple: One ready package, the packages B that depend on the ready package directly or indirectly, and all  the other packages. Remove any packages which can',t be built given that a package has failed. @Given a list of packages, sort them according to their apparant 3 build dependencies so that the first element doesn't depend on any  of the other packages. BThis is a nice start. It ignores circular build depends and takes ! a pretty simplistic approach to  build depends. However, I 3 think this should work pretty nicely in practice. 8Return the dependency info for a list of control files. @One example of how to tie the below functions together. In this  case fp5 is the path to a directory that contains a bunch of C checked out source packages. The code will automatically look for  debian/4control. It returns a list with the packages in the  order they should be built.                       Safe-Infered Safe-InferedG creates a map from a package name to all the versions of that package , NOTE: Provides are not included in the map 9 NOTE: the sort order is random -- this is perhaps a bug  see also:  5 finds packages that Provide other packages and adds A them to the PackageNameMap. They will be adde to the end of the " list, so that real packages have 'higher priority' than virtual  packages. 6 NOTE: Does not check for duplication or multiple use  > returns all the packages that satisfy the specified relation  TODO: Add architecture check  Safe-Infered Fconflicting packages and relations that require non-existant packages .!TODO addProvides -- see DQL.Exec 6JAS: deal with Provides0 (can a package provide more than one package?) B/earliestInconsistency does what it sounds like  the ' reverse as'3 is because the vars are order high to low, but we B want to find the lowest numbered (aka, eariest) inconsistency ?? Gbj - backjumping labeler =If the node already has a conflict set, then leave it alone. BOtherwise, the conflictset for the node is the combination of the &conflict sets of its direct children. + !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI+),+*(-!"#$%&'./0123456789:;<=>?@AB CDEFGHI" !"#$%&'(),+*-./0123456789:;<=>?@ABCDEFGHI  Safe-Infered!"#$%&'()*+,-./012345667899:;<==>?@ABCDEFGGHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoac_p q r s t u v w w x y z { | } ~                   (                                   _ac      !"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSRTUUVV!WXYZ[\]^_`abcdbcebcfbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbc{bc|bc}bc~bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc                    <         debian-3.64Debian.Version.CommonDebian.Extra.Files Debian.Time Debian.URIDebian.ReleaseDebian.SourcesDebian.Control.CommonDebian.Control.StringDebian.Control.PrettyPrint Debian.DebDebian.Apt.MethodsDebian.ChangesDebian.Relation.CommonDebian.Relation.StringDebian.Control.ByteStringDebian.ControlDebian.Apt.Index Debian.ReportDebian.GenBuildDepsDebian.Util.FakeChangesDebian.Apt.PackageDebian.Apt.DependenciesDebian.Version.InternalDebian.Version.StringDebian.Version.ByteStringTest.SourcesListDebian.Version Test.Changes Test.VersionsDebian.Relation.ByteStringDebian.RelationTest.Dependencies DebianVersionParseDebianVersionparseDebianVersionprettyDebianVersionparseDVevrepochversionrevisionbuildDebianVersionwithTemporaryFilerfc822DateFormatepochTimeToUTCTimeformatTimeRFC822parseTimeRFC822getCurrentLocalRFC822Time URIString uriToString' fileFromURIfileFromURIStrict dirFromURI SubSectionsectionsubSectionNameSectionArchBinarySource ReleaseNamerelNameparseReleaseName releaseName'archName sectionName sectionName'sectionNameOfSubSection parseSection parseSection' SliceName sliceName DebSource sourceType sourceUri sourceDist SourceTypeDebSrcDeb quoteWords stripLine sourceLinesparseSourceLineparseSourceLine'parseSourcesListControlFunctionsparseControlFromFileparseControlFromHandle parseControllookupPstripWSasStringField'CommentField Paragraph' ParagraphControl'Control unControl mergeControls fieldValue removeField prependFields appendFields renameField modifyField raiseFieldsparseControlFromCmd md5sumField ControlParserpControlToTexttotext ppControl ppParagraphppFieldfieldsFetchCallbackslogCBstatusCB uriStartCB uriDoneCB uriFailureCBgeneralFailureCBauthorizationRequiredCBmediaFailureCBdebugCB ConfigItemHeaderCommand MediaChangedAuthorizationCredentials Configuration URIAcquireStatus MediaFailureAuthorizationRequiredGeneralFailure URIFailuremessageURIDonefilenamehashesimsHitURIStarturisize lastModified resumePointLogMsg CapabilitiessingleInstancepreScanpipeline sendConfig needsCleanup localOnlyDriveMediaPasswordUserSiteMessage withMethodURIwithMethodPathwhichMethodPath recvStatus sendCommand openMethod closeMethod simpleFetchfetchemptyFetchCallbackscliFetchCallbacksgetLastModifiedChangeLogEntry WhiteSpaceEntry logPackage logVersionlogDists logUrgency logCommentslogWhologDateChangedFileSpecchangedFileMD5sumchangedFileSHA1sumchangedFileSHA256sumchangedFileSizechangedFileSectionchangedFilePrioritychangedFileName ChangesFileChanges changeDir changePackage changeVersion changeRelease changeArch changeInfo changeEntry changeFileschangesFileNameprettyChangesFile prettyChanges prettyEntryparseLog parseEntry parseChanges VersionReqSGRGREEEQLTESLTArchitectureReq ArchExceptArchOnlyParseRelationsparseRelations BinPkgName unBinPkgName SrcPkgName unSrcPkgNamePkgName unPkgNameRelationRel OrRelation AndRelation RelationsprettySrcPkgNameprettyBinPkgName prettyPkgNameprettyRelationprettyArchitectureReqprettyVersionReqcheckVersionReq RelParser pRelations packParagraph packField formatControlformatParagraph formatField FileTupleSizeFetcher CheckSumsmd5sumsha1sha256 Compression UncompressedGZBZ2updatecontrolFromIndexcontrolFromIndex' findIndexesindexesInReleasetupleFromFilePathfindContentsFilesmakePackageMap packageMapextractVersiontrumped trumpedMap trumpedXML BuildableInfo CycleInfodepPairs readyTriples allBlocked RelaxInfo OldRelaxInfoDepInfo sourceName relations binaryNamesbuildDependencies relaxDeps oldRelaxDeps buildable failPackage orderSource compareSourcegenDepsgetSourceOrder fakeChangesPackageNameMappackageNameMap addProvides findProvideslookupPackageByRelLabeler ConflictSetCSPpnm depFunction conflictspackageVersionStateComplete MissingDep Remainingcomplete controlCSPtestCSPdepF sidPackages gutsyPackagestestpackageVersionParagraphconflict conflict'mkTreelabelinitTreemapTreefoldTree zipTreesWithpruneleavesinhTree distrTree mkSearchTreeearliestInconsistency isConflict solutionssearchbtbjunionCScombineFound SimulatedunFoundNumeric NonNumeric $fOrdFound $fEqFound $fOrdNumeric $fEqNumeric$fOrdNonNumeric$fEqNonNumeric$fOrdDebianVersion$fEqDebianVersion$fParseDebianVersion[]$fParseDebianVersionByteString$fOrdURInetwork-2.3.0.11 Network.URIfragmentquerypath authorityscheme unreservedreserved escapeStringparseabsoluteURInormalizePathSegmentsnormalizeEscape normalizeCase relativeFrom relativeTononStrictRelativeTounEscapeStringescapeURIString escapeURICharisUnescapedInURIisAllowedInURI uriToString isUnreserved isReserved isIPv4address isIPv6address isAbsoluteURIisRelativeReferenceisURIReferenceisURIparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuth$fShowDebSource$fShowSourceTypetestQuoteWordstestSourcesListtestSourcesListParsesourcesListTests$fShowControl'$fControlFunctions[] $fShowField'$fShowParagraph'$fToTextByteString $fToText[]$fOrdVersionReq $fOrdRelation$fParseRelations[]s3s4s1s2test3test4test1test2 changesTests$fShowDebianVersion implicit1 implicit2 implicit3 implicit4 implicit5 implicit6 implicit7epoch1epoch2epoch3version1version2version3 revision1 revision2 revision3 revision4compareVorder1order2dash1dash2zero1 versionTests$fParseRelationsByteString$fMonadPlusParser $fMonadParser$fControlFunctionsByteStringbase Data.MaybeNothingGHC.ListorpackageApackageBpackageCpackageDpackageEpackageFpackageGpackageHpackageIpackageJpackageKcontroldependsmkCSPparseCommaListmapSndmissing1ors1 provides1 provides2dependencyTests