) yG      !"#$%&'()*+,-./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:;<=>?@ABCDEF  Safe-Inferred GHIJKLMNOPQ GHIJKLMNOGIHJJKLMNOPQNoneREWe have to do this wackiness because ~ is less than the empty string :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. SRTUVW XYZ[\]   SRTUVW XYZ[\]None^^None__ Safe-Inferred +The function we want to pass a FilePath to &The text that the file should contain  The function's return value    None    None4If the URI type could be read and showed this wouldn't be necessary. `<Parse the text returned when a directory is listed by a web < server. This is currently only known to work with Apache. 2 NOTE: there is a second copy of this function in D Extra:Extra.Net. Please update both locations if you make changes. `6abcdefghijklmnopqrstuvwxyz{|}~`None 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?)  !"#$%&'( !"#$%&'( !"#$%&'(  !"#$%&'(None)>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 )*+,-./0132456789None Safe-Inferred ;; 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 BLines beginning with # 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-InferredWDA 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 ?. AWe are liberal in that we allow *any* field to have folded white A space, even though the specific restricts that to a few fields. We go with the assumption that ' blank lines' mean lines that < consist of entirely of zero or more whitespace characters. ,This may have bad performance issues (why?) STUVW:;<=>?@ABCDEFGHIJKLMNOPSTUVWFGHDEACBUTVS:;<=>?@WIJKLMNOPSTUVW  Safe-InferredXYZ[\XYZ[\Z[\XYXYZ[\  Safe-Inferred]]]] None-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. X^_`abcdefghijklmnopqrstuvwxyz{|}~=^_`abcdefghijklmnopqrstuvwxyz{|}~B^_`abcdefghkonmlpzvtsrq{|}~{|}~wxy{uji.^ _`abcdefghijkonmlpzvtsrq{|}~{|}~wxy{uNone   None,A changelog is a series of ChangeLogEntries #The parser here never returns this 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 DShow just the top line of a changelog entry (for debugging output.) @Parse the entries of a debian changelog and verify they are all  valid. ;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. 2$$   None. 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  <,<= , ==,= , >> !None  None   NoneNoneNoneNone, applied to a predicate p and a ByteString xs, 0 returns the longest prefix (possibly empty) of xs of elements that  satisfy p. findIndexOrEnd4 is a variant of findIndex, that returns the length < of the string if no element is found, rather than Nothing. The " function takes a predicate and a  ByteString and : returns the index of the first element in the ByteString  satisfying the predicate. -      !"#$%&'()*+:;<=>?@ABCDEFGHIJKLMNOPFGHDEACB:;<=>?@IJKLMNOP(      !"#$%&'()*+None!:;<=>?@ABCDEFGHIJKLMNOPSTUVW!FGHDEACBUTVS:;<=>?@WIJKLMNOPNone 3function-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 ,#download possibly compressed files < NOTE: index uri must not include the .bz2 or .gz extension -:examine a DebSource line, and calculate for each section: + - the URI to the uncompressed index file > - the basename that apt-get would name the downloaded index : FIXME: ExactPath dist will fail with error at runtime :( . return a tuple for the section + - the URI to the uncompressed index file < - the basename that apt-get uses for the downloaded index , FIXME: support for Release and Release.gpg (Parse a possibly compressed index file. )parse an index possibly compressed file /3A release file contains a list of indexes (Packages/Sources). Each E Package or Source index may appear multiple times because it may be A compressed several different ways. This function will return an B assoc list where the key is the name of the uncompressed package C index name and the value is the list of (file, compression) which  decompress to the key. 0=The release file contains the checksums for the uncompressed C package indexes, even if the uncompressed package indexes are not D stored on the server. This function returns the list of files that  actually exist. 4make a FileTuple for a file found on the local disk  returns 1 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) ,'function that will do the actual fetch ;remote URI of package index, without .bz2 or .gz extension ?name to save downloaded file as, without .bz2 or .gz extension 7(downloaded file name + extension, compression status) -which binary architecture line from sources.list ;(remote uri, local name, deb source for just this section) .do we want Packages or Sources ,The binary architecture to use for Packages 'base URI as it appears in sources.list 8the release (e.g., unstable, testing, stable, sid, etc) +the section (main, contrib, non-free, etc) 6(uri to index file, basename for the downloaded file) /02A release file ,-./02NoneKcreate 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) None>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?) 3/Turn a list of eithers into an either of lists  copied from Extra.Either  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. 4=Build a graph with the list of packages as its nodes and the " build dependencies as its edges. BThis is a nice start. It ignores circular build depends and takes ! a pretty simplistic approach to 5 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.     3 6748              3 6748None9:;<=>?@ABCDEFGHIJKLMNOPQ9:;<=>?FEDCBA@GHIJKLMNOPQNoneG 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 NoneFconflicting packages and relations that require non-existant packages +!TODO addProvides -- see DQL.Exec 3JAS: deal with Provides0 (can a package provide more than one package?) ?/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 ?? Dbj - 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:;<=>?@ABCDEF+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF+&)('%* !"#$+,-./0123456789:;<=>?@ABCDEF" !"#$%&)('*+,-./0123456789:;<=>?@ABCDEF NoneRSTUVWXYZ[\]^_`abcdefghiRSTUVWXYZ[\]^_`abcdefghRSTUVWXYZ[\]^_`abcdefghij!"#$%&'()*+,-./012345667899:;<==>?@ABCDEFGGHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoac_p q r s t u v w w x y z { | } ~                   (                                    _ac       !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPOQRRSS!TUVWXYZ[\]^_`abcdefgefhefiefjefkeflefmefnefoefpefqefrefseftefuefvefwefxefyefzef{ef|ef}ef~efefefefefefefefefefefefefefefefefefefefefefefefef                                                   op !"#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNO P Q R S T U V W X Y Z [ \ ] ^ 9 _  ` a b c d e debian-3.69Debian.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 simpleFetchfetchemptyFetchCallbackscliFetchCallbacksgetLastModified ChangeLogChangeLogEntry WhiteSpaceEntry logPackage logVersionlogDists logUrgency logCommentslogWhologDateChangedFileSpecchangedFileMD5sumchangedFileSHA1sumchangedFileSHA256sumchangedFileSizechangedFileSectionchangedFilePrioritychangedFileName ChangesFileChanges changeDir changePackage changeVersion changeRelease changeArch changeInfo changeEntry changeFileschangesFileNameparseChangeLog parseEntries parseEntry parseChanges VersionReqSGRGREEEQLTESLTArchitectureReq ArchExceptArchOnlyParseRelationsparseRelationsPkgName prettyPkgNamepkgNameFromString BinPkgName unBinPkgName SrcPkgName unSrcPkgNameRelationRel OrRelation AndRelation RelationsprettyRelationprettyArchitectureReqprettyVersionReqcheckVersionReq 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 $fEqFoundcompareNonNumericordercompareMaybeNonNumeric parseEpochparseNonNumeric parseNumeric $fOrdNumeric $fEqNumeric$fOrdNonNumeric$fEqNonNumeric$fOrdDebianVersion$fEqDebianVersion$fParseDebianVersion[]$fParseDebianVersionByteStringwebServerDirectoryContentsnetwork-2.4.0.1 Network.URIfragmentquerypath authorityscheme unreservedreserved escapeStringparseabsoluteURInormalizePathSegmentsnormalizeEscape normalizeCase relativeFrom relativeTononStrictRelativeTounEscapeStringescapeURIString escapeURICharisUnescapedInURIComponentisUnescapedInURIisAllowedInURI uriToString isUnreserved isReserved uriIsRelative uriIsAbsolute isIPv4address isIPv6address isAbsoluteURIisRelativeReferenceisURIReferenceisURIparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuth$fPrettyDebSource$fPrettySourceTypetestQuoteWordstestSourcesListtestSourcesListParsesourcesListTestspFieldpBlanks$fPrettyControl' pParagraphpCommentfcharfwsfchar_fws$fControlFunctions[]$fPrettyField'$fPrettyParagraph'$fToTextByteString $fToText[]Hashesmd5 MethodHandle capabilitieslogMsgstatusuriStarturiDone uriFailuregeneralFailureauthorizationRequired mediaFailure uriAcquire configurationauthorizationCredentials mediaChanged emptyHashes parseStatus formatCommandparseTrueFalse parseHeader sendMethodrecvbool _showHeaderentryRE changeDetails signatureheaderRE blankLines blankLineoptWhitebol_s1$fPrettyChangeLog$fPrettyChangeLogEntry$fPrettyChangedFileSpec$fPrettyChangesFile$fOrdVersionReq $fOrdRelation$fPkgNameSrcPkgName$fPkgNameBinPkgName pOrRelation whiteChar pRelation pMaybeVerReqpVerReq pMaybeArch pArchExcept pArchOnly$fParseRelations[]s3s4s1s2test5test3test4test1test2 changesTests$fShowChangeLog$fShowDebianVersion implicit1 implicit2 implicit3 implicit4 implicit5 implicit6 implicit7epoch1epoch2epoch3version1version2version3 revision1 revision2 revision3 revision4compareVorder1order2dash1dash2zero1 versionTests$fParseRelationsByteString _takeWhile2baseGHC.List takeWhilefindIndex2OrEnd _findIndex2 Data.List findIndexParserunParserResultEmptyFailOkpKeypValuebreak2span2w2cc2wm2rr2m _pSucceed_pFail<|>satisfypChar_trypEOF pTakeWhile2 pTakeWhile _pSkipWhilepManynotEmptypMany1 pSkipMany _pSkipMany1parse$fMonadPlusParser $fMonadParser$fControlFunctionsByteString fetchIndex indexURIscalcPath groupIndexes filterExists Data.MaybeNothinguncompressedName concatEithers buildGraphor makeRelaxInfo cycleEdgesassocFilesdscdebstardiffErrorVersionMismatchMalformedDebFilename UnknownFiles TooManyDiffs TooManyTars TooManyDscsNoDebs getVersion getSource getMaintainer getArches getBinArch mkFileLine unzipEithers debNameSplit loadFiles getUploader singletonpackageApackageBpackageCpackageDpackageEpackageFpackageGpackageHpackageIpackageJpackageKcontroldependsmkCSPparseCommaListmapSndmissing1ors1 provides1 provides2dependencyTests