debian 3.89 → 3.91
raw patch · 8 files changed
+338/−53 lines, 8 filesdep ~ListLikesetup-changedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ListLike
API changes (from Hackage documentation)
- Debian.Apt.Dependencies: conflicts :: CSP a -> a -> Relations
- Debian.Apt.Dependencies: depFunction :: CSP a -> (a -> Relations)
- Debian.Apt.Dependencies: instance Eq Status
- Debian.Apt.Dependencies: packageVersion :: CSP a -> a -> (BinPkgName, DebianVersion)
- Debian.Apt.Dependencies: pnm :: CSP a -> PackageNameMap a
- Debian.Apt.Dependencies: relations :: CSP a -> Relations
- Debian.Apt.Index: instance Bounded Compression
- Debian.Apt.Index: instance Enum Compression
- Debian.Apt.Index: instance Eq CheckSums
- Debian.Apt.Index: instance Eq Compression
- Debian.Apt.Index: instance Ord Compression
- Debian.Apt.Index: instance Read CheckSums
- Debian.Apt.Index: instance Read Compression
- Debian.Apt.Index: instance Show CheckSums
- Debian.Apt.Index: instance Show Compression
- Debian.Apt.Index: md5sum :: CheckSums -> Maybe String
- Debian.Apt.Index: sha1 :: CheckSums -> Maybe String
- Debian.Apt.Index: sha256 :: CheckSums -> Maybe String
- Debian.Apt.Methods: authorizationRequiredCB :: FetchCallbacks -> Site -> IO (Maybe (User, Password))
- Debian.Apt.Methods: debugCB :: FetchCallbacks -> String -> IO ()
- Debian.Apt.Methods: filename :: Status -> Maybe FilePath
- Debian.Apt.Methods: generalFailureCB :: FetchCallbacks -> Message -> IO ()
- Debian.Apt.Methods: hashes :: Status -> Hashes
- Debian.Apt.Methods: imsHit :: Status -> Bool
- Debian.Apt.Methods: instance Eq Command
- Debian.Apt.Methods: instance Eq Hashes
- Debian.Apt.Methods: instance Eq Status
- Debian.Apt.Methods: instance Show Command
- Debian.Apt.Methods: instance Show Hashes
- Debian.Apt.Methods: instance Show Status
- Debian.Apt.Methods: lastModified :: Status -> Maybe UTCTime
- Debian.Apt.Methods: localOnly :: Status -> Bool
- Debian.Apt.Methods: logCB :: FetchCallbacks -> Message -> IO ()
- Debian.Apt.Methods: mediaFailureCB :: FetchCallbacks -> Media -> Drive -> IO ()
- Debian.Apt.Methods: message :: Status -> Message
- Debian.Apt.Methods: needsCleanup :: Status -> Bool
- Debian.Apt.Methods: pipeline :: Status -> Bool
- Debian.Apt.Methods: preScan :: Status -> Bool
- Debian.Apt.Methods: resumePoint :: Status -> Maybe Integer
- Debian.Apt.Methods: sendConfig :: Status -> Bool
- Debian.Apt.Methods: singleInstance :: Status -> Bool
- Debian.Apt.Methods: size :: Status -> Maybe Integer
- Debian.Apt.Methods: statusCB :: FetchCallbacks -> URI -> Message -> IO ()
- Debian.Apt.Methods: uri :: Status -> URI
- Debian.Apt.Methods: uriDoneCB :: FetchCallbacks -> URI -> Maybe Integer -> Maybe UTCTime -> Maybe Integer -> Maybe FilePath -> Hashes -> Bool -> IO ()
- Debian.Apt.Methods: uriFailureCB :: FetchCallbacks -> URI -> Message -> IO ()
- Debian.Apt.Methods: uriStartCB :: FetchCallbacks -> URI -> Maybe Integer -> Maybe UTCTime -> Maybe Integer -> IO ()
- Debian.Apt.Methods: version :: Status -> String
- Debian.Arch: instance Data Arch
- Debian.Arch: instance Data ArchCPU
- Debian.Arch: instance Data ArchOS
- Debian.Arch: instance Eq Arch
- Debian.Arch: instance Eq ArchCPU
- Debian.Arch: instance Eq ArchOS
- Debian.Arch: instance Ord Arch
- Debian.Arch: instance Ord ArchCPU
- Debian.Arch: instance Ord ArchOS
- Debian.Arch: instance Read Arch
- Debian.Arch: instance Read ArchCPU
- Debian.Arch: instance Read ArchOS
- Debian.Arch: instance Show Arch
- Debian.Arch: instance Show ArchCPU
- Debian.Arch: instance Show ArchOS
- Debian.Arch: instance Typeable Arch
- Debian.Arch: instance Typeable ArchCPU
- Debian.Arch: instance Typeable ArchOS
- Debian.Changes: changeArch :: ChangesFile -> Arch
- Debian.Changes: changeDir :: ChangesFile -> FilePath
- Debian.Changes: changeEntry :: ChangesFile -> ChangeLogEntry
- Debian.Changes: changeFiles :: ChangesFile -> [ChangedFileSpec]
- Debian.Changes: changeInfo :: ChangesFile -> Paragraph' Text
- Debian.Changes: changePackage :: ChangesFile -> String
- Debian.Changes: changeRelease :: ChangesFile -> ReleaseName
- Debian.Changes: changeVersion :: ChangesFile -> DebianVersion
- Debian.Changes: changedFileMD5sum :: ChangedFileSpec -> String
- Debian.Changes: changedFileName :: ChangedFileSpec -> FilePath
- Debian.Changes: changedFilePriority :: ChangedFileSpec -> String
- Debian.Changes: changedFileSHA1sum :: ChangedFileSpec -> String
- Debian.Changes: changedFileSHA256sum :: ChangedFileSpec -> String
- Debian.Changes: changedFileSection :: ChangedFileSpec -> SubSection
- Debian.Changes: changedFileSize :: ChangedFileSpec -> FileOffset
- Debian.Changes: instance Eq ChangeLog
- Debian.Changes: instance Eq ChangeLogEntry
- Debian.Changes: instance Eq ChangedFileSpec
- Debian.Changes: instance Eq ChangesFile
- Debian.Changes: instance Pretty (PP ChangeLog)
- Debian.Changes: instance Pretty (PP ChangeLogEntry)
- Debian.Changes: instance Pretty (PP ChangedFileSpec)
- Debian.Changes: instance Pretty (PP ChangesFile)
- Debian.Changes: instance Pretty (PP [ChangeLogEntry])
- Debian.Changes: instance Read ChangeLog
- Debian.Changes: instance Read ChangeLogEntry
- Debian.Changes: instance Read ChangedFileSpec
- Debian.Changes: instance Read ChangesFile
- Debian.Changes: instance Show ChangeLog
- Debian.Changes: instance Show ChangeLogEntry
- Debian.Changes: instance Show ChangedFileSpec
- Debian.Changes: instance Show ChangesFile
- Debian.Changes: logComments :: ChangeLogEntry -> String
- Debian.Changes: logDate :: ChangeLogEntry -> String
- Debian.Changes: logDists :: ChangeLogEntry -> [ReleaseName]
- Debian.Changes: logPackage :: ChangeLogEntry -> String
- Debian.Changes: logUrgency :: ChangeLogEntry -> String
- Debian.Changes: logVersion :: ChangeLogEntry -> DebianVersion
- Debian.Changes: logWho :: ChangeLogEntry -> String
- Debian.Control: field :: ControlFileError -> String
- Debian.Control: ioError :: ControlFileError -> IOError
- Debian.Control: locs :: ControlFileError -> [Loc]
- Debian.Control: parseError :: ControlFileError -> ParseError
- Debian.Control: unControl :: Control' a -> [Paragraph' a]
- Debian.Control.ByteString: instance Alternative (Parser state)
- Debian.Control.ByteString: instance Applicative (Parser state)
- Debian.Control.ByteString: instance ControlFunctions ByteString
- Debian.Control.ByteString: instance Functor (Parser state)
- Debian.Control.ByteString: instance Monad (Parser state)
- Debian.Control.ByteString: instance MonadPlus (Parser state)
- Debian.Control.ByteString: instance Show a => Show (Result a)
- Debian.Control.ByteString: unControl :: Control' a -> [Paragraph' a]
- Debian.Control.Common: instance (ControlFunctions a, Pretty (PP a)) => Pretty (Control' a)
- Debian.Control.Common: instance (ControlFunctions a, Pretty (PP a)) => Pretty (Field' a)
- Debian.Control.Common: instance (ControlFunctions a, Pretty (PP a)) => Pretty (Paragraph' a)
- Debian.Control.Common: instance Eq a => Eq (Control' a)
- Debian.Control.Common: instance Eq a => Eq (Field' a)
- Debian.Control.Common: instance Eq a => Eq (Paragraph' a)
- Debian.Control.Common: instance Ord a => Ord (Control' a)
- Debian.Control.Common: instance Ord a => Ord (Field' a)
- Debian.Control.Common: instance Ord a => Ord (Paragraph' a)
- Debian.Control.Common: instance Read a => Read (Control' a)
- Debian.Control.Common: instance Read a => Read (Field' a)
- Debian.Control.Common: instance Read a => Read (Paragraph' a)
- Debian.Control.Common: instance Show a => Show (Control' a)
- Debian.Control.Common: instance Show a => Show (Field' a)
- Debian.Control.Common: instance Show a => Show (Paragraph' a)
- Debian.Control.Common: unControl :: Control' a -> [Paragraph' a]
- Debian.Control.Policy: field :: ControlFileError -> String
- Debian.Control.Policy: instance Eq ControlFileError
- Debian.Control.Policy: instance Exception ControlFileError
- Debian.Control.Policy: instance HasControl (Control' Text)
- Debian.Control.Policy: instance HasControl DebianControl
- Debian.Control.Policy: instance HasDebianControl DebianControl
- Debian.Control.Policy: instance Show ControlFileError
- Debian.Control.Policy: instance Show DebianControl
- Debian.Control.Policy: instance Typeable ControlFileError
- Debian.Control.Policy: ioError :: ControlFileError -> IOError
- Debian.Control.Policy: locs :: ControlFileError -> [Loc]
- Debian.Control.Policy: parseError :: ControlFileError -> ParseError
- Debian.Control.String: instance ControlFunctions String
- Debian.Control.Text: instance ControlFunctions Text
- Debian.Control.Text: unControl :: Control' a -> [Paragraph' a]
- Debian.GenBuildDeps: allBlocked :: BuildableInfo a -> [a]
- Debian.GenBuildDeps: binSet :: DepInfo -> Set BinPkgName
- Debian.GenBuildDeps: binaryNames :: DepInfo -> [BinPkgName]
- Debian.GenBuildDeps: depPairs :: BuildableInfo a -> [(a, a)]
- Debian.GenBuildDeps: depSet :: DepInfo -> Set BinPkgName
- Debian.GenBuildDeps: instance Eq DepInfo
- Debian.GenBuildDeps: instance Show DepInfo
- Debian.GenBuildDeps: instance Show OldRelaxInfo
- Debian.GenBuildDeps: other :: ReadyTarget a -> [a]
- Debian.GenBuildDeps: ready :: ReadyTarget a -> a
- Debian.GenBuildDeps: readyTargets :: BuildableInfo a -> [ReadyTarget a]
- Debian.GenBuildDeps: relations :: DepInfo -> Relations
- Debian.GenBuildDeps: sourceName :: DepInfo -> SrcPkgName
- Debian.GenBuildDeps: waiting :: ReadyTarget a -> [a]
- Debian.Pretty: instance Functor PP
- Debian.Pretty: instance Pretty (PP String)
- Debian.Pretty: instance Pretty (PP Text)
- Debian.Pretty: instance Pretty (PP a) => Pretty (PP (Maybe a))
- Debian.Pretty: unPP :: PP a -> a
- Debian.Relation: unBinPkgName :: BinPkgName -> String
- Debian.Relation: unSrcPkgName :: SrcPkgName -> String
- Debian.Relation.ByteString: instance ParseRelations ByteString
- Debian.Relation.Common: instance Data BinPkgName
- Debian.Relation.Common: instance Data SrcPkgName
- Debian.Relation.Common: instance Eq ArchitectureReq
- Debian.Relation.Common: instance Eq BinPkgName
- Debian.Relation.Common: instance Eq Relation
- Debian.Relation.Common: instance Eq SrcPkgName
- Debian.Relation.Common: instance Eq VersionReq
- Debian.Relation.Common: instance Ord ArchitectureReq
- Debian.Relation.Common: instance Ord BinPkgName
- Debian.Relation.Common: instance Ord Relation
- Debian.Relation.Common: instance Ord SrcPkgName
- Debian.Relation.Common: instance Ord VersionReq
- Debian.Relation.Common: instance PkgName BinPkgName
- Debian.Relation.Common: instance PkgName SrcPkgName
- Debian.Relation.Common: instance Pretty (PP ArchitectureReq)
- Debian.Relation.Common: instance Pretty (PP BinPkgName)
- Debian.Relation.Common: instance Pretty (PP OrRelation)
- Debian.Relation.Common: instance Pretty (PP Relation)
- Debian.Relation.Common: instance Pretty (PP Relations)
- Debian.Relation.Common: instance Pretty (PP SrcPkgName)
- Debian.Relation.Common: instance Pretty (PP VersionReq)
- Debian.Relation.Common: instance Read ArchitectureReq
- Debian.Relation.Common: instance Read BinPkgName
- Debian.Relation.Common: instance Read Relation
- Debian.Relation.Common: instance Read SrcPkgName
- Debian.Relation.Common: instance Read VersionReq
- Debian.Relation.Common: instance Show ArchitectureReq
- Debian.Relation.Common: instance Show BinPkgName
- Debian.Relation.Common: instance Show Relation
- Debian.Relation.Common: instance Show SrcPkgName
- Debian.Relation.Common: instance Show VersionReq
- Debian.Relation.Common: instance Typeable BinPkgName
- Debian.Relation.Common: instance Typeable SrcPkgName
- Debian.Relation.Common: unBinPkgName :: BinPkgName -> String
- Debian.Relation.Common: unSrcPkgName :: SrcPkgName -> String
- Debian.Relation.String: instance ParseRelations String
- Debian.Relation.Text: instance ParseRelations Text
- Debian.Release: instance Data ReleaseName
- Debian.Release: instance Eq ReleaseName
- Debian.Release: instance Eq Section
- Debian.Release: instance Eq SubSection
- Debian.Release: instance Ord ReleaseName
- Debian.Release: instance Ord Section
- Debian.Release: instance Ord SubSection
- Debian.Release: instance Read ReleaseName
- Debian.Release: instance Read Section
- Debian.Release: instance Read SubSection
- Debian.Release: instance Show ReleaseName
- Debian.Release: instance Show Section
- Debian.Release: instance Show SubSection
- Debian.Release: instance Typeable ReleaseName
- Debian.Release: relName :: ReleaseName -> String
- Debian.Release: section :: SubSection -> Section
- Debian.Release: subSectionName :: SubSection -> String
- Debian.Sources: instance Eq DebSource
- Debian.Sources: instance Eq SourceType
- Debian.Sources: instance Ord DebSource
- Debian.Sources: instance Ord SourceType
- Debian.Sources: instance Pretty (PP [DebSource])
- Debian.Sources: instance Pretty DebSource
- Debian.Sources: instance Pretty SourceType
- Debian.Sources: instance Show DebSource
- Debian.Sources: instance Show SourceType
- Debian.Sources: sourceDist :: DebSource -> Either String (ReleaseName, [Section])
- Debian.Sources: sourceType :: DebSource -> SourceType
- Debian.Sources: sourceUri :: DebSource -> URI
- Debian.URI: instance Eq URI'
- Debian.URI: instance Ord URI'
- Debian.URI: instance Read URI'
- Debian.URI: instance Show URI'
- Debian.Util.FakeChanges: instance Data Error
- Debian.Util.FakeChanges: instance Eq Error
- Debian.Util.FakeChanges: instance Read Error
- Debian.Util.FakeChanges: instance Show Error
- Debian.Util.FakeChanges: instance Typeable Error
- Debian.Version.ByteString: instance ParseDebianVersion ByteString
- Debian.Version.Common: instance Eq DebianVersion
- Debian.Version.Common: instance Eq NonNumeric
- Debian.Version.Common: instance Eq Numeric
- Debian.Version.Common: instance Ord DebianVersion
- Debian.Version.Common: instance Ord NonNumeric
- Debian.Version.Common: instance Ord Numeric
- Debian.Version.Common: instance Pretty (PP DebianVersion)
- Debian.Version.Common: instance Show DebianVersion
- Debian.Version.String: instance ParseDebianVersion String
- Debian.Version.String: instance Read DebianVersion
- Debian.Version.Text: instance ParseDebianVersion Text
+ Debian.Apt.Dependencies: [conflicts] :: CSP a -> a -> Relations
+ Debian.Apt.Dependencies: [depFunction] :: CSP a -> (a -> Relations)
+ Debian.Apt.Dependencies: [packageVersion] :: CSP a -> a -> (BinPkgName, DebianVersion)
+ Debian.Apt.Dependencies: [pnm] :: CSP a -> PackageNameMap a
+ Debian.Apt.Dependencies: [relations] :: CSP a -> Relations
+ Debian.Apt.Dependencies: instance GHC.Classes.Eq Debian.Apt.Dependencies.Status
+ Debian.Apt.Index: [md5sum] :: CheckSums -> Maybe String
+ Debian.Apt.Index: [sha1] :: CheckSums -> Maybe String
+ Debian.Apt.Index: [sha256] :: CheckSums -> Maybe String
+ Debian.Apt.Index: instance GHC.Classes.Eq Debian.Apt.Index.CheckSums
+ Debian.Apt.Index: instance GHC.Classes.Eq Debian.Apt.Index.Compression
+ Debian.Apt.Index: instance GHC.Classes.Ord Debian.Apt.Index.Compression
+ Debian.Apt.Index: instance GHC.Enum.Bounded Debian.Apt.Index.Compression
+ Debian.Apt.Index: instance GHC.Enum.Enum Debian.Apt.Index.Compression
+ Debian.Apt.Index: instance GHC.Read.Read Debian.Apt.Index.CheckSums
+ Debian.Apt.Index: instance GHC.Read.Read Debian.Apt.Index.Compression
+ Debian.Apt.Index: instance GHC.Show.Show Debian.Apt.Index.CheckSums
+ Debian.Apt.Index: instance GHC.Show.Show Debian.Apt.Index.Compression
+ Debian.Apt.Methods: [authorizationRequiredCB] :: FetchCallbacks -> Site -> IO (Maybe (User, Password))
+ Debian.Apt.Methods: [debugCB] :: FetchCallbacks -> String -> IO ()
+ Debian.Apt.Methods: [filename] :: Status -> Maybe FilePath
+ Debian.Apt.Methods: [generalFailureCB] :: FetchCallbacks -> Message -> IO ()
+ Debian.Apt.Methods: [hashes] :: Status -> Hashes
+ Debian.Apt.Methods: [imsHit] :: Status -> Bool
+ Debian.Apt.Methods: [lastModified] :: Status -> Maybe UTCTime
+ Debian.Apt.Methods: [localOnly] :: Status -> Bool
+ Debian.Apt.Methods: [logCB] :: FetchCallbacks -> Message -> IO ()
+ Debian.Apt.Methods: [mediaFailureCB] :: FetchCallbacks -> Media -> Drive -> IO ()
+ Debian.Apt.Methods: [message] :: Status -> Message
+ Debian.Apt.Methods: [needsCleanup] :: Status -> Bool
+ Debian.Apt.Methods: [pipeline] :: Status -> Bool
+ Debian.Apt.Methods: [preScan] :: Status -> Bool
+ Debian.Apt.Methods: [resumePoint] :: Status -> Maybe Integer
+ Debian.Apt.Methods: [sendConfig] :: Status -> Bool
+ Debian.Apt.Methods: [singleInstance] :: Status -> Bool
+ Debian.Apt.Methods: [size] :: Status -> Maybe Integer
+ Debian.Apt.Methods: [statusCB] :: FetchCallbacks -> URI -> Message -> IO ()
+ Debian.Apt.Methods: [uriDoneCB] :: FetchCallbacks -> URI -> Maybe Integer -> Maybe UTCTime -> Maybe Integer -> Maybe FilePath -> Hashes -> Bool -> IO ()
+ Debian.Apt.Methods: [uriFailureCB] :: FetchCallbacks -> URI -> Message -> IO ()
+ Debian.Apt.Methods: [uriStartCB] :: FetchCallbacks -> URI -> Maybe Integer -> Maybe UTCTime -> Maybe Integer -> IO ()
+ Debian.Apt.Methods: [uri] :: Status -> URI
+ Debian.Apt.Methods: [version] :: Status -> String
+ Debian.Apt.Methods: instance GHC.Classes.Eq Debian.Apt.Methods.Command
+ Debian.Apt.Methods: instance GHC.Classes.Eq Debian.Apt.Methods.Hashes
+ Debian.Apt.Methods: instance GHC.Classes.Eq Debian.Apt.Methods.Status
+ Debian.Apt.Methods: instance GHC.Show.Show Debian.Apt.Methods.Command
+ Debian.Apt.Methods: instance GHC.Show.Show Debian.Apt.Methods.Hashes
+ Debian.Apt.Methods: instance GHC.Show.Show Debian.Apt.Methods.Status
+ Debian.Arch: instance Data.Data.Data Debian.Arch.Arch
+ Debian.Arch: instance Data.Data.Data Debian.Arch.ArchCPU
+ Debian.Arch: instance Data.Data.Data Debian.Arch.ArchOS
+ Debian.Arch: instance GHC.Classes.Eq Debian.Arch.Arch
+ Debian.Arch: instance GHC.Classes.Eq Debian.Arch.ArchCPU
+ Debian.Arch: instance GHC.Classes.Eq Debian.Arch.ArchOS
+ Debian.Arch: instance GHC.Classes.Ord Debian.Arch.Arch
+ Debian.Arch: instance GHC.Classes.Ord Debian.Arch.ArchCPU
+ Debian.Arch: instance GHC.Classes.Ord Debian.Arch.ArchOS
+ Debian.Arch: instance GHC.Read.Read Debian.Arch.Arch
+ Debian.Arch: instance GHC.Read.Read Debian.Arch.ArchCPU
+ Debian.Arch: instance GHC.Read.Read Debian.Arch.ArchOS
+ Debian.Arch: instance GHC.Show.Show Debian.Arch.Arch
+ Debian.Arch: instance GHC.Show.Show Debian.Arch.ArchCPU
+ Debian.Arch: instance GHC.Show.Show Debian.Arch.ArchOS
+ Debian.Changes: [changeArch] :: ChangesFile -> Arch
+ Debian.Changes: [changeDir] :: ChangesFile -> FilePath
+ Debian.Changes: [changeEntry] :: ChangesFile -> ChangeLogEntry
+ Debian.Changes: [changeFiles] :: ChangesFile -> [ChangedFileSpec]
+ Debian.Changes: [changeInfo] :: ChangesFile -> Paragraph' Text
+ Debian.Changes: [changePackage] :: ChangesFile -> String
+ Debian.Changes: [changeRelease] :: ChangesFile -> ReleaseName
+ Debian.Changes: [changeVersion] :: ChangesFile -> DebianVersion
+ Debian.Changes: [changedFileMD5sum] :: ChangedFileSpec -> String
+ Debian.Changes: [changedFileName] :: ChangedFileSpec -> FilePath
+ Debian.Changes: [changedFilePriority] :: ChangedFileSpec -> String
+ Debian.Changes: [changedFileSHA1sum] :: ChangedFileSpec -> String
+ Debian.Changes: [changedFileSHA256sum] :: ChangedFileSpec -> String
+ Debian.Changes: [changedFileSection] :: ChangedFileSpec -> SubSection
+ Debian.Changes: [changedFileSize] :: ChangedFileSpec -> FileOffset
+ Debian.Changes: [logComments] :: ChangeLogEntry -> String
+ Debian.Changes: [logDate] :: ChangeLogEntry -> String
+ Debian.Changes: [logDists] :: ChangeLogEntry -> [ReleaseName]
+ Debian.Changes: [logPackage] :: ChangeLogEntry -> String
+ Debian.Changes: [logUrgency] :: ChangeLogEntry -> String
+ Debian.Changes: [logVersion] :: ChangeLogEntry -> DebianVersion
+ Debian.Changes: [logWho] :: ChangeLogEntry -> String
+ Debian.Changes: instance GHC.Classes.Eq Debian.Changes.ChangeLog
+ Debian.Changes: instance GHC.Classes.Eq Debian.Changes.ChangeLogEntry
+ Debian.Changes: instance GHC.Classes.Eq Debian.Changes.ChangedFileSpec
+ Debian.Changes: instance GHC.Classes.Eq Debian.Changes.ChangesFile
+ Debian.Changes: instance GHC.Read.Read Debian.Changes.ChangeLog
+ Debian.Changes: instance GHC.Read.Read Debian.Changes.ChangeLogEntry
+ Debian.Changes: instance GHC.Read.Read Debian.Changes.ChangedFileSpec
+ Debian.Changes: instance GHC.Read.Read Debian.Changes.ChangesFile
+ Debian.Changes: instance GHC.Show.Show Debian.Changes.ChangeLog
+ Debian.Changes: instance GHC.Show.Show Debian.Changes.ChangeLogEntry
+ Debian.Changes: instance GHC.Show.Show Debian.Changes.ChangedFileSpec
+ Debian.Changes: instance GHC.Show.Show Debian.Changes.ChangesFile
+ Debian.Changes: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Changes.ChangeLog)
+ Debian.Changes: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Changes.ChangeLogEntry)
+ Debian.Changes: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Changes.ChangedFileSpec)
+ Debian.Changes: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Changes.ChangesFile)
+ Debian.Changes: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP [Debian.Changes.ChangeLogEntry])
+ Debian.Control: [field] :: ControlFileError -> String
+ Debian.Control: [ioError] :: ControlFileError -> IOError
+ Debian.Control: [locs] :: ControlFileError -> [Loc]
+ Debian.Control: [parseError] :: ControlFileError -> ParseError
+ Debian.Control: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.Builder: Comment :: a -> Field' a
+ Debian.Control.Builder: Control :: [Paragraph' a] -> Control' a
+ Debian.Control.Builder: Field :: (a, a) -> Field' a
+ Debian.Control.Builder: Paragraph :: [Field' a] -> Paragraph' a
+ Debian.Control.Builder: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.Builder: appendFields :: [Field' a] -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: asString :: ControlFunctions a => a -> String
+ Debian.Control.Builder: class ControlFunctions a
+ Debian.Control.Builder: data Field' a
+ Debian.Control.Builder: decodeControl :: Control -> Control
+ Debian.Control.Builder: decodeField :: Field' ByteString -> Field' Builder
+ Debian.Control.Builder: decodeParagraph :: Paragraph -> Paragraph
+ Debian.Control.Builder: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
+ Debian.Control.Builder: instance Debian.Control.Common.ControlFunctions Data.Text.Internal.Builder.Builder
+ Debian.Control.Builder: lookupP :: ControlFunctions a => String -> (Paragraph' a) -> Maybe (Field' a)
+ Debian.Control.Builder: mergeControls :: [Control' a] -> Control' a
+ Debian.Control.Builder: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: newtype Control' a
+ Debian.Control.Builder: newtype Paragraph' a
+ Debian.Control.Builder: parseControl :: ControlFunctions a => String -> a -> (Either ParseError (Control' a))
+ Debian.Control.Builder: parseControlFromFile :: ControlFunctions a => FilePath -> IO (Either ParseError (Control' a))
+ Debian.Control.Builder: parseControlFromHandle :: ControlFunctions a => String -> Handle -> IO (Either ParseError (Control' a))
+ Debian.Control.Builder: prependFields :: [Field' a] -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: protectFieldText :: ControlFunctions a => a -> a
+ Debian.Control.Builder: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Builder: stripWS :: ControlFunctions a => a -> a
+ Debian.Control.Builder: type Control = Control' Builder
+ Debian.Control.Builder: type Field = Field' Builder
+ Debian.Control.Builder: type Paragraph = Paragraph' Builder
+ Debian.Control.ByteString: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.ByteString: instance Debian.Control.Common.ControlFunctions Data.ByteString.Internal.ByteString
+ Debian.Control.ByteString: instance GHC.Base.Alternative (Debian.Control.ByteString.Parser state)
+ Debian.Control.ByteString: instance GHC.Base.Applicative (Debian.Control.ByteString.Parser state)
+ Debian.Control.ByteString: instance GHC.Base.Functor (Debian.Control.ByteString.Parser state)
+ Debian.Control.ByteString: instance GHC.Base.Monad (Debian.Control.ByteString.Parser state)
+ Debian.Control.ByteString: instance GHC.Base.MonadPlus (Debian.Control.ByteString.Parser state)
+ Debian.Control.ByteString: instance GHC.Show.Show a => GHC.Show.Show (Debian.Control.ByteString.Result a)
+ Debian.Control.Common: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.Common: instance (Debian.Control.Common.ControlFunctions a, Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP a)) => Text.PrettyPrint.HughesPJClass.Pretty (Debian.Control.Common.Control' a)
+ Debian.Control.Common: instance (Debian.Control.Common.ControlFunctions a, Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP a)) => Text.PrettyPrint.HughesPJClass.Pretty (Debian.Control.Common.Field' a)
+ Debian.Control.Common: instance (Debian.Control.Common.ControlFunctions a, Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP a)) => Text.PrettyPrint.HughesPJClass.Pretty (Debian.Control.Common.Paragraph' a)
+ Debian.Control.Common: instance GHC.Classes.Eq a => GHC.Classes.Eq (Debian.Control.Common.Control' a)
+ Debian.Control.Common: instance GHC.Classes.Eq a => GHC.Classes.Eq (Debian.Control.Common.Field' a)
+ Debian.Control.Common: instance GHC.Classes.Eq a => GHC.Classes.Eq (Debian.Control.Common.Paragraph' a)
+ Debian.Control.Common: instance GHC.Classes.Ord a => GHC.Classes.Ord (Debian.Control.Common.Control' a)
+ Debian.Control.Common: instance GHC.Classes.Ord a => GHC.Classes.Ord (Debian.Control.Common.Field' a)
+ Debian.Control.Common: instance GHC.Classes.Ord a => GHC.Classes.Ord (Debian.Control.Common.Paragraph' a)
+ Debian.Control.Common: instance GHC.Read.Read a => GHC.Read.Read (Debian.Control.Common.Control' a)
+ Debian.Control.Common: instance GHC.Read.Read a => GHC.Read.Read (Debian.Control.Common.Field' a)
+ Debian.Control.Common: instance GHC.Read.Read a => GHC.Read.Read (Debian.Control.Common.Paragraph' a)
+ Debian.Control.Common: instance GHC.Show.Show a => GHC.Show.Show (Debian.Control.Common.Control' a)
+ Debian.Control.Common: instance GHC.Show.Show a => GHC.Show.Show (Debian.Control.Common.Field' a)
+ Debian.Control.Common: instance GHC.Show.Show a => GHC.Show.Show (Debian.Control.Common.Paragraph' a)
+ Debian.Control.Policy: [field] :: ControlFileError -> String
+ Debian.Control.Policy: [ioError] :: ControlFileError -> IOError
+ Debian.Control.Policy: [locs] :: ControlFileError -> [Loc]
+ Debian.Control.Policy: [parseError] :: ControlFileError -> ParseError
+ Debian.Control.Policy: instance Debian.Control.Policy.HasControl (Debian.Control.Common.Control' Data.Text.Internal.Text)
+ Debian.Control.Policy: instance Debian.Control.Policy.HasControl Debian.Control.Policy.DebianControl
+ Debian.Control.Policy: instance Debian.Control.Policy.HasDebianControl Debian.Control.Policy.DebianControl
+ Debian.Control.Policy: instance GHC.Classes.Eq Debian.Control.Policy.ControlFileError
+ Debian.Control.Policy: instance GHC.Exception.Exception Debian.Control.Policy.ControlFileError
+ Debian.Control.Policy: instance GHC.Show.Show Debian.Control.Policy.ControlFileError
+ Debian.Control.Policy: instance GHC.Show.Show Debian.Control.Policy.DebianControl
+ Debian.Control.String: instance Debian.Control.Common.ControlFunctions GHC.Base.String
+ Debian.Control.Text: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.Text: instance Debian.Control.Common.ControlFunctions Data.Text.Internal.Text
+ Debian.Control.TextLazy: Comment :: a -> Field' a
+ Debian.Control.TextLazy: Control :: [Paragraph' a] -> Control' a
+ Debian.Control.TextLazy: Field :: (a, a) -> Field' a
+ Debian.Control.TextLazy: Paragraph :: [Field' a] -> Paragraph' a
+ Debian.Control.TextLazy: [unControl] :: Control' a -> [Paragraph' a]
+ Debian.Control.TextLazy: appendFields :: [Field' a] -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: asString :: ControlFunctions a => a -> String
+ Debian.Control.TextLazy: class ControlFunctions a
+ Debian.Control.TextLazy: data Field' a
+ Debian.Control.TextLazy: decodeControl :: Control -> Control
+ Debian.Control.TextLazy: decodeField :: Field' ByteString -> Field' Text
+ Debian.Control.TextLazy: decodeParagraph :: Paragraph -> Paragraph
+ Debian.Control.TextLazy: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
+ Debian.Control.TextLazy: instance Debian.Control.Common.ControlFunctions Data.Text.Internal.Lazy.Text
+ Debian.Control.TextLazy: lookupP :: ControlFunctions a => String -> (Paragraph' a) -> Maybe (Field' a)
+ Debian.Control.TextLazy: mergeControls :: [Control' a] -> Control' a
+ Debian.Control.TextLazy: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: newtype Control' a
+ Debian.Control.TextLazy: newtype Paragraph' a
+ Debian.Control.TextLazy: parseControl :: ControlFunctions a => String -> a -> (Either ParseError (Control' a))
+ Debian.Control.TextLazy: parseControlFromFile :: ControlFunctions a => FilePath -> IO (Either ParseError (Control' a))
+ Debian.Control.TextLazy: parseControlFromHandle :: ControlFunctions a => String -> Handle -> IO (Either ParseError (Control' a))
+ Debian.Control.TextLazy: prependFields :: [Field' a] -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: protectFieldText :: ControlFunctions a => a -> a
+ Debian.Control.TextLazy: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.TextLazy: stripWS :: ControlFunctions a => a -> a
+ Debian.Control.TextLazy: type Control = Control' Text
+ Debian.Control.TextLazy: type Field = Field' Text
+ Debian.Control.TextLazy: type Paragraph = Paragraph' Text
+ Debian.GenBuildDeps: [allBlocked] :: BuildableInfo a -> [a]
+ Debian.GenBuildDeps: [binSet] :: DepInfo -> Set BinPkgName
+ Debian.GenBuildDeps: [binaryNames] :: DepInfo -> [BinPkgName]
+ Debian.GenBuildDeps: [depPairs] :: BuildableInfo a -> [(a, a)]
+ Debian.GenBuildDeps: [depSet] :: DepInfo -> Set BinPkgName
+ Debian.GenBuildDeps: [other] :: ReadyTarget a -> [a]
+ Debian.GenBuildDeps: [readyTargets] :: BuildableInfo a -> [ReadyTarget a]
+ Debian.GenBuildDeps: [ready] :: ReadyTarget a -> a
+ Debian.GenBuildDeps: [relations] :: DepInfo -> Relations
+ Debian.GenBuildDeps: [sourceName] :: DepInfo -> SrcPkgName
+ Debian.GenBuildDeps: [waiting] :: ReadyTarget a -> [a]
+ Debian.GenBuildDeps: instance GHC.Classes.Eq Debian.GenBuildDeps.DepInfo
+ Debian.GenBuildDeps: instance GHC.Show.Show Debian.GenBuildDeps.DepInfo
+ Debian.GenBuildDeps: instance GHC.Show.Show Debian.GenBuildDeps.OldRelaxInfo
+ Debian.Pretty: [unPP] :: PP a -> a
+ Debian.Pretty: instance GHC.Base.Functor Debian.Pretty.PP
+ Debian.Pretty: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Data.Text.Internal.Text)
+ Debian.Pretty: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP GHC.Base.String)
+ Debian.Pretty: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP a) => Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP (GHC.Base.Maybe a))
+ Debian.Relation: [unBinPkgName] :: BinPkgName -> String
+ Debian.Relation: [unSrcPkgName] :: SrcPkgName -> String
+ Debian.Relation.ByteString: instance Debian.Relation.Common.ParseRelations Data.ByteString.Internal.ByteString
+ Debian.Relation.Common: [unBinPkgName] :: BinPkgName -> String
+ Debian.Relation.Common: [unSrcPkgName] :: SrcPkgName -> String
+ Debian.Relation.Common: instance Data.Data.Data Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance Data.Data.Data Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance Debian.Relation.Common.PkgName Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance Debian.Relation.Common.PkgName Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance GHC.Classes.Eq Debian.Relation.Common.ArchitectureReq
+ Debian.Relation.Common: instance GHC.Classes.Eq Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance GHC.Classes.Eq Debian.Relation.Common.Relation
+ Debian.Relation.Common: instance GHC.Classes.Eq Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance GHC.Classes.Eq Debian.Relation.Common.VersionReq
+ Debian.Relation.Common: instance GHC.Classes.Ord Debian.Relation.Common.ArchitectureReq
+ Debian.Relation.Common: instance GHC.Classes.Ord Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance GHC.Classes.Ord Debian.Relation.Common.Relation
+ Debian.Relation.Common: instance GHC.Classes.Ord Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance GHC.Classes.Ord Debian.Relation.Common.VersionReq
+ Debian.Relation.Common: instance GHC.Read.Read Debian.Relation.Common.ArchitectureReq
+ Debian.Relation.Common: instance GHC.Read.Read Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance GHC.Read.Read Debian.Relation.Common.Relation
+ Debian.Relation.Common: instance GHC.Read.Read Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance GHC.Read.Read Debian.Relation.Common.VersionReq
+ Debian.Relation.Common: instance GHC.Show.Show Debian.Relation.Common.ArchitectureReq
+ Debian.Relation.Common: instance GHC.Show.Show Debian.Relation.Common.BinPkgName
+ Debian.Relation.Common: instance GHC.Show.Show Debian.Relation.Common.Relation
+ Debian.Relation.Common: instance GHC.Show.Show Debian.Relation.Common.SrcPkgName
+ Debian.Relation.Common: instance GHC.Show.Show Debian.Relation.Common.VersionReq
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.ArchitectureReq)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.BinPkgName)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.OrRelation)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.Relation)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.Relations)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.SrcPkgName)
+ Debian.Relation.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Relation.Common.VersionReq)
+ Debian.Relation.String: instance Debian.Relation.Common.ParseRelations GHC.Base.String
+ Debian.Relation.Text: instance Debian.Relation.Common.ParseRelations Data.Text.Internal.Text
+ Debian.Release: [relName] :: ReleaseName -> String
+ Debian.Release: [section] :: SubSection -> Section
+ Debian.Release: [subSectionName] :: SubSection -> String
+ Debian.Release: instance Data.Data.Data Debian.Release.ReleaseName
+ Debian.Release: instance GHC.Classes.Eq Debian.Release.ReleaseName
+ Debian.Release: instance GHC.Classes.Eq Debian.Release.Section
+ Debian.Release: instance GHC.Classes.Eq Debian.Release.SubSection
+ Debian.Release: instance GHC.Classes.Ord Debian.Release.ReleaseName
+ Debian.Release: instance GHC.Classes.Ord Debian.Release.Section
+ Debian.Release: instance GHC.Classes.Ord Debian.Release.SubSection
+ Debian.Release: instance GHC.Read.Read Debian.Release.ReleaseName
+ Debian.Release: instance GHC.Read.Read Debian.Release.Section
+ Debian.Release: instance GHC.Read.Read Debian.Release.SubSection
+ Debian.Release: instance GHC.Show.Show Debian.Release.ReleaseName
+ Debian.Release: instance GHC.Show.Show Debian.Release.Section
+ Debian.Release: instance GHC.Show.Show Debian.Release.SubSection
+ Debian.Sources: [sourceDist] :: DebSource -> Either String (ReleaseName, [Section])
+ Debian.Sources: [sourceType] :: DebSource -> SourceType
+ Debian.Sources: [sourceUri] :: DebSource -> URI
+ Debian.Sources: instance GHC.Classes.Eq Debian.Sources.DebSource
+ Debian.Sources: instance GHC.Classes.Eq Debian.Sources.SourceType
+ Debian.Sources: instance GHC.Classes.Ord Debian.Sources.DebSource
+ Debian.Sources: instance GHC.Classes.Ord Debian.Sources.SourceType
+ Debian.Sources: instance GHC.Show.Show Debian.Sources.DebSource
+ Debian.Sources: instance GHC.Show.Show Debian.Sources.SourceType
+ Debian.Sources: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP [Debian.Sources.DebSource])
+ Debian.Sources: instance Text.PrettyPrint.HughesPJClass.Pretty Debian.Sources.DebSource
+ Debian.Sources: instance Text.PrettyPrint.HughesPJClass.Pretty Debian.Sources.SourceType
+ Debian.URI: instance GHC.Classes.Eq Debian.URI.URI'
+ Debian.URI: instance GHC.Classes.Ord Debian.URI.URI'
+ Debian.URI: instance GHC.Read.Read Debian.URI.URI'
+ Debian.URI: instance GHC.Show.Show Debian.URI.URI'
+ Debian.Util.FakeChanges: instance Data.Data.Data Debian.Util.FakeChanges.Error
+ Debian.Util.FakeChanges: instance GHC.Classes.Eq Debian.Util.FakeChanges.Error
+ Debian.Util.FakeChanges: instance GHC.Read.Read Debian.Util.FakeChanges.Error
+ Debian.Util.FakeChanges: instance GHC.Show.Show Debian.Util.FakeChanges.Error
+ Debian.Version.ByteString: instance Debian.Version.Common.ParseDebianVersion Data.ByteString.Internal.ByteString
+ Debian.Version.Common: instance GHC.Classes.Eq Debian.Version.Internal.DebianVersion
+ Debian.Version.Common: instance GHC.Classes.Eq Debian.Version.Internal.NonNumeric
+ Debian.Version.Common: instance GHC.Classes.Eq Debian.Version.Internal.Numeric
+ Debian.Version.Common: instance GHC.Classes.Ord Debian.Version.Internal.DebianVersion
+ Debian.Version.Common: instance GHC.Classes.Ord Debian.Version.Internal.NonNumeric
+ Debian.Version.Common: instance GHC.Classes.Ord Debian.Version.Internal.Numeric
+ Debian.Version.Common: instance GHC.Show.Show Debian.Version.Internal.DebianVersion
+ Debian.Version.Common: instance Text.PrettyPrint.HughesPJClass.Pretty (Debian.Pretty.PP Debian.Version.Internal.DebianVersion)
+ Debian.Version.String: instance Debian.Version.Common.ParseDebianVersion GHC.Base.String
+ Debian.Version.String: instance GHC.Read.Read Debian.Version.Internal.DebianVersion
+ Debian.Version.Text: instance Debian.Version.Common.ParseDebianVersion Data.Text.Internal.Text
- Debian.Apt.Dependencies: mkSearchTree :: CSP a -> Tree (State a)
+ Debian.Apt.Dependencies: mkSearchTree :: forall a. CSP a -> Tree (State a)
- Debian.Apt.Package: findProvides :: (p -> [BinPkgName]) -> [p] -> [(BinPkgName, p)]
+ Debian.Apt.Package: findProvides :: forall p. (p -> [BinPkgName]) -> [p] -> [(BinPkgName, p)]
- Debian.Changes: parseChangeLog :: String -> ChangeLog
+ Debian.Changes: parseChangeLog :: String -> Either [[String]] ChangeLog
- Debian.Control: fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a
+ Debian.Control: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
- Debian.Control: modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
- Debian.Control: raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
- Debian.Control: removeField :: Eq a => a -> Paragraph' a -> Paragraph' a
+ Debian.Control: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
- Debian.Control: renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
- Debian.Control.ByteString: fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a
+ Debian.Control.ByteString: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
- Debian.Control.ByteString: modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.ByteString: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
- Debian.Control.ByteString: raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.ByteString: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
- Debian.Control.ByteString: removeField :: Eq a => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.ByteString: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
- Debian.Control.ByteString: renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.ByteString: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
- Debian.Control.Common: fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a
+ Debian.Control.Common: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
- Debian.Control.Common: md5sumField :: ControlFunctions a => Paragraph' a -> Maybe a
+ Debian.Control.Common: md5sumField :: (ControlFunctions a) => Paragraph' a -> Maybe a
- Debian.Control.Common: modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Common: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
- Debian.Control.Common: protectFieldText' :: (StringLike a, ListLike a Char) => ControlFunctions a => a -> a
+ Debian.Control.Common: protectFieldText' :: forall a. (StringLike a, ListLike a Char) => ControlFunctions a => a -> a
- Debian.Control.Common: raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Common: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
- Debian.Control.Common: removeField :: Eq a => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Common: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
- Debian.Control.Common: renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Common: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
- Debian.Control.String: fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a
+ Debian.Control.String: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
- Debian.Control.String: modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.String: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
- Debian.Control.String: raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.String: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
- Debian.Control.String: removeField :: Eq a => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.String: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
- Debian.Control.String: renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.String: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
- Debian.Control.Text: fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a
+ Debian.Control.Text: fieldValue :: (ControlFunctions a) => String -> Paragraph' a -> Maybe a
- Debian.Control.Text: modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Text: modifyField :: (Eq a) => a -> (a -> a) -> Paragraph' a -> Paragraph' a
- Debian.Control.Text: raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a
+ Debian.Control.Text: raiseFields :: (Eq a) => (a -> Bool) -> Paragraph' a -> Paragraph' a
- Debian.Control.Text: removeField :: Eq a => a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Text: removeField :: (Eq a) => a -> Paragraph' a -> Paragraph' a
- Debian.Control.Text: renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a
+ Debian.Control.Text: renameField :: (Eq a) => a -> a -> Paragraph' a -> Paragraph' a
- Debian.Deb: fields :: ControlFunctions a => FilePath -> IO (Control' a)
+ Debian.Deb: fields :: (ControlFunctions a) => FilePath -> IO (Control' a)
- Debian.GenBuildDeps: buildable :: (a -> DepInfo) -> [a] -> BuildableInfo a
+ Debian.GenBuildDeps: buildable :: forall a. (a -> DepInfo) -> [a] -> BuildableInfo a
- Debian.Loc: mapExn :: (MonadCatch m, Exception e) => m a -> (e -> e) -> m a
+ Debian.Loc: mapExn :: forall e m a. (MonadCatch m, Exception e) => m a -> (e -> e) -> m a
- Debian.Time: formatTimeRFC822 :: FormatTime t => t -> String
+ Debian.Time: formatTimeRFC822 :: (FormatTime t) => t -> String
- Debian.Time: parseTimeRFC822 :: ParseTime t => String -> Maybe t
+ Debian.Time: parseTimeRFC822 :: (ParseTime t) => String -> Maybe t
Files
- Debian/Changes.hs +3/−44
- Debian/Control.hs +2/−0
- Debian/Control/Builder.hs +161/−0
- Debian/Control/TextLazy.hs +155/−0
- Setup.hs +1/−7
- changelog +6/−0
- debian.cabal +4/−2
- debian/changelog +6/−0
Debian/Changes.hs view
@@ -167,11 +167,11 @@ -- | Parse the entries of a debian changelog and verify they are all -- valid.-parseChangeLog :: String -> ChangeLog+parseChangeLog :: String -> Either [[String]] ChangeLog parseChangeLog s = case partitionEithers (parseEntries s) of- ([], xs) -> ChangeLog xs- (ss, _) -> error (intercalate "\n " ("Error(s) parsing changelog:" : concat ss))+ ([], xs) -> Right (ChangeLog xs)+ (ss, _) -> Left ss -- |Parse a Debian Changelog and return a lazy list of entries parseEntries :: String -> [Either [String] ChangeLogEntry]@@ -182,27 +182,6 @@ Right (entry, text') -> Right entry : parseEntries text' -- |Parse a single changelog entry, returning the entry and the remaining text.-{--parseEntry :: String -> Failing (ChangeLogEntry, String)-parseEntry text =- case span (\ x -> elem x " \t\n") text of- ("", _) ->- case matchRegexAll entryRE text of- Nothing -> Failure ["Parse error in changelog:\n" ++ show text]- Just ("", _, remaining, [_, name, version, dists, urgency, _, details, _, _, _, _, _, who, date, _]) ->- Success (Entry name- (parseDebianVersion version)- (map parseReleaseName . words $ dists)- urgency- details- who- date,- remaining)- Just (before, _, remaining, submatches) ->- Failure ["Internal error:\n text=" ++ show text ++ "\n before=" ++ show before ++ "\n remaining=" ++ show remaining ++ ", submatches=" ++ show submatches]- (w, text') -> Success (WhiteSpace (trace ("whitespace: " ++ show w) w), text')--}- parseEntry :: String -> Either [String] (ChangeLogEntry, String) parseEntry text = case text =~ entryRE :: MatchResult String of@@ -218,30 +197,10 @@ after) MR {mrBefore = _before, mrMatch = _matched, mrAfter = after, mrSubList = matches} -> Left ["Internal error\n after=" ++ show after ++ "\n " ++ show (length matches) ++ " matches: " ++ show matches]-{--parseREs :: [Regex] -> String -> Failing ([String], String)-parseREs res text =- foldr f (Success ([], text)) entryREs- where- f _ (Failure msgs) = Failure msgs- f re (Success (oldMatches, text)) =- case matchRegexAll re text of- Nothing -> Failure ["Parse error at " ++ show text]- Just (before, matched, after, newMatches) ->- Success (oldMatches ++ trace ("newMatches=" ++ show newMatches) newMatches, after)--} entryRE = bol ++ blankLines ++ headerRE ++ changeDetails ++ signature ++ blankLines changeDetails = "((\n| \n| -\n|([^ ]| [^--]| -[^--])[^\n]*\n)*)" signature = " -- ([ ]*([^ ]+ )* )([^\n]*)\n"--{--entryRE = mkRegexWithOpts (bol ++ blankLines ++ headerRE ++ nonSigLines ++ blankLines ++ signature ++ blankLines) False True-nonSigLines = "((( .*|\t.*| \t.*)|([ \t]*)\n)+)"--- In the debian repository, sometimes the extra space in front of the--- day-of-month is missing, sometimes an extra one is added.-signature = "( -- ([^\n]*) (..., ? ?.. ... .... ........ .....))[ \t]*\n"--} -- |Parse the changelog information that shows up in the .changes -- file, i.e. a changelog entry with no signature.
Debian/Control.hs view
@@ -51,7 +51,9 @@ import Debian.Control.String import Data.List import Data.Text as T (Text, pack, concat)+import qualified Debian.Control.Builder () import qualified Debian.Control.Text as T+import qualified Debian.Control.TextLazy as TL import qualified Debian.Control.ByteString as B () import qualified Debian.Control.Policy as P import qualified Debian.Control.String as S
+ Debian/Control/Builder.hs view
@@ -0,0 +1,161 @@+{-# LANGUAGE FlexibleInstances, OverloadedStrings, ScopedTypeVariables, TypeSynonymInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-name-shadowing -fno-warn-unused-do-bind #-}+module Debian.Control.Builder+ ( -- * Types+ Control'(..)+ , Paragraph'(..)+ , Field'(..)+ , Control+ , Paragraph+ , Field+ -- , ControlParser+ , ControlFunctions(..)+ -- * Control File Parser+ -- , pControl+ -- * Helper Functions+ , mergeControls+ , fieldValue+ , removeField+ , prependFields+ , appendFields+ , renameField+ , modifyField+ , raiseFields+ , decodeControl+ , decodeParagraph+ , decodeField+ ) where++import qualified Data.ByteString.Char8 as B+import Data.Char (toLower, chr)+import Data.List (find)+import qualified Data.ListLike as LL+import Data.ListLike.Text.Builder ()+import qualified Data.Text as T (pack, unpack, map, reverse)+import Data.Text.Lazy (toStrict)+import Data.Text.Lazy.Builder (Builder, fromLazyText, fromText, toLazyText)+import Data.Text.Encoding (decodeUtf8With, encodeUtf8)+--import Data.Text.IO as T (readFile)+import qualified Debian.Control.ByteString as B+--import Text.Parsec.Error (ParseError)+--import Text.Parsec.Text (Parser)+--import Text.Parsec.Prim (runP)+import Debian.Control.Common (ControlFunctions(parseControlFromFile, parseControlFromHandle, parseControl, lookupP, stripWS, asString),+ Control'(Control), Paragraph'(Paragraph), Field'(Field, Comment),+ mergeControls, fieldValue, removeField, prependFields, appendFields,+ renameField, modifyField, raiseFields, protectFieldText')++-- | @parseFromFile p filePath@ runs a string parser @p@ on the+-- input read from @filePath@ using 'Prelude.readFile'. Returns either a 'ParseError'+-- ('Left') or a value of type @a@ ('Right').+--+-- > main = do{ result <- parseFromFile numbers "digits.txt"+-- > ; case result of+-- > Left err -> print err+-- > Right xs -> print (sum xs)+-- > }+{-+parseFromFile :: Parser a -> String -> IO (Either ParseError a)+parseFromFile p fname+ = do input <- T.readFile fname `E.catch` (\ (_ :: E.SomeException) -> B.readFile fname >>= return . decode)+ return (runP p () fname input)+-}++type Field = Field' Builder+type Control = Control' Builder+type Paragraph = Paragraph' Builder++decodeControl :: B.Control -> Control+decodeControl (B.Control paragraphs) = Control (map decodeParagraph paragraphs)++decodeParagraph :: B.Paragraph -> Paragraph+decodeParagraph (B.Paragraph s) = B.Paragraph (map decodeField s)++decodeField :: Field' B.ByteString -> Field' Builder+decodeField (B.Field (name, value)) = Field (decode name, decode value)+decodeField (B.Comment s) = Comment (decode s)++decode :: B.ByteString -> Builder+decode = fromText . decodeUtf8With (\ _ w -> fmap (chr . fromIntegral) w)++-- * ControlFunctions++instance ControlFunctions Builder where+ parseControlFromFile filepath =+ -- The ByteString parser is far more efficient than the Text+ -- parser. By calling decodeControl we tell the compiler to+ -- use it instead.+ parseControlFromFile filepath >>= return . either Left (Right . decodeControl)+ parseControlFromHandle sourceName handle =+ parseControlFromHandle sourceName handle >>= return . either Left (Right . decodeControl)+ parseControl sourceName c =+ -- Warning: This is very slow, it does a utf8 round trip+ either Left (Right . decodeControl) (parseControl sourceName (encodeUtf8 (toStrict (toLazyText c))))+ lookupP fieldName (Paragraph paragraph) =+ find (hasFieldName (map toLower fieldName)) paragraph+ where hasFieldName :: String -> Field' Builder -> Bool+ hasFieldName name (Field (fieldName',_)) = name == LL.map toLower (LL.toString fieldName')+ hasFieldName _ _ = False+ stripWS = dropAround (`elem` (" \t" :: String))+ -- T.strip would also strip newlines+ protectFieldText = protectFieldText'+ asString = LL.toString++dropAround p = LL.dropWhile p . LL.dropWhileEnd p++-- * Control File Parser+{-+-- type ControlParser = GenParser T.Text+type ControlParser a = Parsec T.Text () a++-- |A parser for debian control file. This parser handles control files+-- that end without a newline as well as ones that have several blank+-- lines at the end. It is very liberal and does not attempt validate+-- the fields in any way. All trailing, leading, and folded whitespace+-- is preserved in the field values. See 'stripWS'.+pControl :: ControlParser Control+pControl =+ do many $ char '\n'+ sepEndBy pParagraph pBlanks >>= return . Control++pParagraph :: ControlParser Paragraph+pParagraph = many1 (pComment <|> pField) >>= return . Paragraph++-- |We are liberal in that we allow *any* field to have folded white+-- space, even though the specific restricts that to a few fields.+pField :: ControlParser Field+pField =+ do c1 <- noneOf "#\n"+ fieldName <- many1 $ noneOf ":\n"+ char ':'+ fieldValue <- many fcharfws+ (char '\n' >> return ()) <|> eof+ return $ Field (T.cons c1 (T.pack fieldName), T.pack fieldValue)++pComment :: ControlParser Field+pComment =+ do char '#'+ text <- many (satisfy (not . ((==) '\n')))+ char '\n'+ return $ Comment (T.pack ("#" <> text <> "\n"))++fcharfws :: ControlParser Char+fcharfws = fchar <|> (try $ lookAhead (string "\n ") >> char '\n') <|> (try $ lookAhead (string "\n\t") >> char '\n') <|> (try $ lookAhead (string "\n#") >> char '\n')++fchar :: ControlParser Char+fchar = satisfy (/='\n')++_fws :: ControlParser T.Text+_fws =+ try $ do char '\n'+ ws <- many1 (char ' ')+ c <- many1 (satisfy (not . ((==) '\n')))+ return $ T.cons '\n' (T.pack ws <> T.pack c)++-- |We go with the assumption that 'blank lines' mean lines that+-- consist of entirely of zero or more whitespace characters.+pBlanks :: ControlParser T.Text+pBlanks =+ do s <- many1 (oneOf " \n")+ return . T.pack $ s+-}
+ Debian/Control/TextLazy.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE FlexibleInstances, OverloadedStrings, ScopedTypeVariables, TypeSynonymInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-name-shadowing -fno-warn-unused-do-bind #-}+module Debian.Control.TextLazy+ ( -- * Types+ Control'(..)+ , Paragraph'(..)+ , Field'(..)+ , Control+ , Paragraph+ , Field+ -- , ControlParser+ , ControlFunctions(..)+ -- * Control File Parser+ -- , pControl+ -- * Helper Functions+ , mergeControls+ , fieldValue+ , removeField+ , prependFields+ , appendFields+ , renameField+ , modifyField+ , raiseFields+ , decodeControl+ , decodeParagraph+ , decodeField+ ) where++import qualified Data.ByteString.Char8 as B+import Data.Char (toLower, chr)+import Data.List (find)+import qualified Data.Text.Lazy as T (Text, pack, unpack, map, dropAround, reverse, fromStrict, toStrict)+import Data.Text.Encoding (decodeUtf8With, encodeUtf8)+--import Data.Text.IO as T (readFile)+import qualified Debian.Control.ByteString as B+--import Text.Parsec.Error (ParseError)+--import Text.Parsec.Text (Parser)+--import Text.Parsec.Prim (runP)+import Debian.Control.Common (ControlFunctions(parseControlFromFile, parseControlFromHandle, parseControl, lookupP, stripWS, asString),+ Control'(Control), Paragraph'(Paragraph), Field'(Field, Comment),+ mergeControls, fieldValue, removeField, prependFields, appendFields,+ renameField, modifyField, raiseFields, protectFieldText')++-- | @parseFromFile p filePath@ runs a string parser @p@ on the+-- input read from @filePath@ using 'Prelude.readFile'. Returns either a 'ParseError'+-- ('Left') or a value of type @a@ ('Right').+--+-- > main = do{ result <- parseFromFile numbers "digits.txt"+-- > ; case result of+-- > Left err -> print err+-- > Right xs -> print (sum xs)+-- > }+{-+parseFromFile :: Parser a -> String -> IO (Either ParseError a)+parseFromFile p fname+ = do input <- T.readFile fname `E.catch` (\ (_ :: E.SomeException) -> B.readFile fname >>= return . decode)+ return (runP p () fname input)+-}++type Field = Field' T.Text+type Control = Control' T.Text+type Paragraph = Paragraph' T.Text++decodeControl :: B.Control -> Control+decodeControl (B.Control paragraphs) = Control (map decodeParagraph paragraphs)++decodeParagraph :: B.Paragraph -> Paragraph+decodeParagraph (B.Paragraph s) = B.Paragraph (map decodeField s)++decodeField :: Field' B.ByteString -> Field' T.Text+decodeField (B.Field (name, value)) = Field (decode name, decode value)+decodeField (B.Comment s) = Comment (decode s)++decode :: B.ByteString -> T.Text+decode = T.fromStrict . decodeUtf8With (\ _ w -> fmap (chr . fromIntegral) w)++-- * ControlFunctions++instance ControlFunctions T.Text where+ parseControlFromFile filepath =+ -- The ByteString parser is far more efficient than the Text+ -- parser. By calling decodeControl we tell the compiler to+ -- use it instead.+ parseControlFromFile filepath >>= return . either Left (Right . decodeControl)+ parseControlFromHandle sourceName handle =+ parseControlFromHandle sourceName handle >>= return . either Left (Right . decodeControl)+ parseControl sourceName c =+ -- Warning: This is very slow, it does a utf8 round trip+ either Left (Right . decodeControl) (parseControl sourceName (encodeUtf8 (T.toStrict c)))+ lookupP fieldName (Paragraph paragraph) =+ find (hasFieldName (map toLower fieldName)) paragraph+ where hasFieldName :: String -> Field' T.Text -> Bool+ hasFieldName name (Field (fieldName',_)) = T.pack name == T.map toLower fieldName'+ hasFieldName _ _ = False+ stripWS = T.dropAround (`elem` (" \t" :: String))+ -- T.strip would also strip newlines+ protectFieldText = protectFieldText'+ asString = T.unpack++-- * Control File Parser+{-+-- type ControlParser = GenParser T.Text+type ControlParser a = Parsec T.Text () a++-- |A parser for debian control file. This parser handles control files+-- that end without a newline as well as ones that have several blank+-- lines at the end. It is very liberal and does not attempt validate+-- the fields in any way. All trailing, leading, and folded whitespace+-- is preserved in the field values. See 'stripWS'.+pControl :: ControlParser Control+pControl =+ do many $ char '\n'+ sepEndBy pParagraph pBlanks >>= return . Control++pParagraph :: ControlParser Paragraph+pParagraph = many1 (pComment <|> pField) >>= return . Paragraph++-- |We are liberal in that we allow *any* field to have folded white+-- space, even though the specific restricts that to a few fields.+pField :: ControlParser Field+pField =+ do c1 <- noneOf "#\n"+ fieldName <- many1 $ noneOf ":\n"+ char ':'+ fieldValue <- many fcharfws+ (char '\n' >> return ()) <|> eof+ return $ Field (T.cons c1 (T.pack fieldName), T.pack fieldValue)++pComment :: ControlParser Field+pComment =+ do char '#'+ text <- many (satisfy (not . ((==) '\n')))+ char '\n'+ return $ Comment (T.pack ("#" <> text <> "\n"))++fcharfws :: ControlParser Char+fcharfws = fchar <|> (try $ lookAhead (string "\n ") >> char '\n') <|> (try $ lookAhead (string "\n\t") >> char '\n') <|> (try $ lookAhead (string "\n#") >> char '\n')++fchar :: ControlParser Char+fchar = satisfy (/='\n')++_fws :: ControlParser T.Text+_fws =+ try $ do char '\n'+ ws <- many1 (char ' ')+ c <- many1 (satisfy (not . ((==) '\n')))+ return $ T.cons '\n' (T.pack ws <> T.pack c)++-- |We go with the assumption that 'blank lines' mean lines that+-- consist of entirely of zero or more whitespace characters.+pBlanks :: ControlParser T.Text+pBlanks =+ do s <- many1 (oneOf " \n")+ return . T.pack $ s+-}
Setup.hs view
@@ -1,11 +1,5 @@ #!/usr/bin/runhaskell import Distribution.Simple-import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(buildDir))-import Distribution.Simple.Program-import System.Directory-import System.Exit-import System.FilePath ((</>))-import System.Process -main = copyFile "debian/changelog" "changelog" >> defaultMainWithHooks simpleUserHooks+main = defaultMainWithHooks simpleUserHooks
changelog view
@@ -1,3 +1,9 @@+haskell-debian (3.91) unstable; urgency=low++ * Eliminate error call in parseChangeLog++ -- David Fox <dsf@seereason.com> Thu, 06 Oct 2016 09:42:06 -0700+ haskell-debian (3.89) unstable; urgency=low * Change signature of parseDebianVersion to return Either ParseError DebianVerions.
debian.cabal view
@@ -1,5 +1,5 @@ Name: debian-Version: 3.89+Version: 3.91 License: BSD3 License-File: debian/copyright Author: David Fox <dsf@seereason.com>, Jeremy Shaw <jeremy@seereason.com>, Clifford Beshers <beshers@seereason.com>@@ -37,7 +37,7 @@ filepath, HaXml >= 1.20, HUnit,- ListLike >= 4.1.1,+ ListLike >= 4.3.5, mtl, old-locale, parsec >= 2 && <4,@@ -72,10 +72,12 @@ Debian.Changes, Debian.Control, Debian.Control.Common,+ Debian.Control.Builder Debian.Control.ByteString, Debian.Control.Policy, Debian.Control.String, Debian.Control.Text,+ Debian.Control.TextLazy, Debian.Deb, Debian.Extra.Files, Debian.GenBuildDeps,
debian/changelog view
@@ -1,3 +1,9 @@+haskell-debian (3.91) unstable; urgency=low++ * Eliminate error call in parseChangeLog++ -- David Fox <dsf@seereason.com> Thu, 06 Oct 2016 09:42:06 -0700+ haskell-debian (3.89) unstable; urgency=low * Change signature of parseDebianVersion to return Either ParseError DebianVerions.