b9 0.4.1 → 0.5.2
raw patch · 11 files changed
+159/−167 lines, 11 filesdep +freedep ~ConfigFiledep ~asyncdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: free
Dependency ranges changed: ConfigFile, async, base, binary, bytestring, conduit, conduit-extra, directory, filepath, mtl, old-locale, optparse-applicative, parsec, process, random, syb, text, time, transformers, vector
API changes (from Hackage documentation)
- B9.ArtifactGenerator: instance Arbitrary ArtifactAssembly
- B9.ArtifactGenerator: instance Arbitrary ArtifactGenerator
- B9.ArtifactGenerator: instance Arbitrary ArtifactSource
- B9.ArtifactGenerator: instance Arbitrary CloudInitType
- B9.ArtifactGenerator: instance Arbitrary InstanceId
- B9.ArtifactGenerator: instance Data ArtifactAssembly
- B9.ArtifactGenerator: instance Data ArtifactTarget
- B9.ArtifactGenerator: instance Data AssembledArtifact
- B9.ArtifactGenerator: instance Data CloudInitType
- B9.ArtifactGenerator: instance Data InstanceId
- B9.ArtifactGenerator: instance Eq ArtifactAssembly
- B9.ArtifactGenerator: instance Eq ArtifactGenerator
- B9.ArtifactGenerator: instance Eq ArtifactSource
- B9.ArtifactGenerator: instance Eq ArtifactTarget
- B9.ArtifactGenerator: instance Eq AssembledArtifact
- B9.ArtifactGenerator: instance Eq CloudInitType
- B9.ArtifactGenerator: instance Eq InstanceId
- B9.ArtifactGenerator: instance Monoid ArtifactGenerator
- B9.ArtifactGenerator: instance Read ArtifactAssembly
- B9.ArtifactGenerator: instance Read ArtifactGenerator
- B9.ArtifactGenerator: instance Read ArtifactSource
- B9.ArtifactGenerator: instance Read ArtifactTarget
- B9.ArtifactGenerator: instance Read AssembledArtifact
- B9.ArtifactGenerator: instance Read CloudInitType
- B9.ArtifactGenerator: instance Read InstanceId
- B9.ArtifactGenerator: instance Show ArtifactAssembly
- B9.ArtifactGenerator: instance Show ArtifactGenerator
- B9.ArtifactGenerator: instance Show ArtifactSource
- B9.ArtifactGenerator: instance Show ArtifactTarget
- B9.ArtifactGenerator: instance Show AssembledArtifact
- B9.ArtifactGenerator: instance Show CloudInitType
- B9.ArtifactGenerator: instance Show InstanceId
- B9.ArtifactGenerator: instance Typeable ArtifactAssembly
- B9.ArtifactGenerator: instance Typeable ArtifactTarget
- B9.ArtifactGenerator: instance Typeable AssembledArtifact
- B9.ArtifactGenerator: instance Typeable CloudInitType
- B9.ArtifactGenerator: instance Typeable InstanceId
- B9.ArtifactGeneratorImpl: agEnv :: CGEnv -> [(String, String)]
- B9.ArtifactGeneratorImpl: agSources :: CGEnv -> [ArtifactSource]
- B9.ArtifactGeneratorImpl: instance Applicative CGParser
- B9.ArtifactGeneratorImpl: instance Data CGError
- B9.ArtifactGeneratorImpl: instance Data SGPerm
- B9.ArtifactGeneratorImpl: instance Data SGType
- B9.ArtifactGeneratorImpl: instance Data e => Data (InstanceGenerator e)
- B9.ArtifactGeneratorImpl: instance Eq CGEnv
- B9.ArtifactGeneratorImpl: instance Eq CGError
- B9.ArtifactGeneratorImpl: instance Eq SGPerm
- B9.ArtifactGeneratorImpl: instance Eq SGSource
- B9.ArtifactGeneratorImpl: instance Eq SGType
- B9.ArtifactGeneratorImpl: instance Eq SourceGenerator
- B9.ArtifactGeneratorImpl: instance Eq e => Eq (InstanceGenerator e)
- B9.ArtifactGeneratorImpl: instance Error CGError
- B9.ArtifactGeneratorImpl: instance Functor CGParser
- B9.ArtifactGeneratorImpl: instance Monad CGParser
- B9.ArtifactGeneratorImpl: instance MonadError CGError CGParser
- B9.ArtifactGeneratorImpl: instance MonadReader CGEnv CGParser
- B9.ArtifactGeneratorImpl: instance MonadWriter [InstanceGenerator CGEnv] CGParser
- B9.ArtifactGeneratorImpl: instance Read CGEnv
- B9.ArtifactGeneratorImpl: instance Read CGError
- B9.ArtifactGeneratorImpl: instance Read SGPerm
- B9.ArtifactGeneratorImpl: instance Read SGSource
- B9.ArtifactGeneratorImpl: instance Read SGType
- B9.ArtifactGeneratorImpl: instance Read SourceGenerator
- B9.ArtifactGeneratorImpl: instance Read e => Read (InstanceGenerator e)
- B9.ArtifactGeneratorImpl: instance Show CGEnv
- B9.ArtifactGeneratorImpl: instance Show CGError
- B9.ArtifactGeneratorImpl: instance Show SGPerm
- B9.ArtifactGeneratorImpl: instance Show SGSource
- B9.ArtifactGeneratorImpl: instance Show SGType
- B9.ArtifactGeneratorImpl: instance Show SourceGenerator
- B9.ArtifactGeneratorImpl: instance Show e => Show (InstanceGenerator e)
- B9.ArtifactGeneratorImpl: instance Typeable CGError
- B9.ArtifactGeneratorImpl: instance Typeable InstanceGenerator
- B9.ArtifactGeneratorImpl: instance Typeable SGPerm
- B9.ArtifactGeneratorImpl: instance Typeable SGType
- B9.ArtifactGeneratorImpl: runCGParser :: CGParser a -> WriterT [InstanceGenerator CGEnv] (ReaderT CGEnv (Either CGError)) a
- B9.B9Config: buildDirRoot :: B9Config -> Maybe FilePath
- B9.B9Config: envVars :: B9Config -> BuildVariables
- B9.B9Config: execEnvType :: B9Config -> ExecEnvType
- B9.B9Config: instance Eq ExecEnvType
- B9.B9Config: instance Eq LogLevel
- B9.B9Config: instance Monoid B9Config
- B9.B9Config: instance Ord ExecEnvType
- B9.B9Config: instance Ord LogLevel
- B9.B9Config: instance Read ExecEnvType
- B9.B9Config: instance Read LogLevel
- B9.B9Config: instance Show B9Config
- B9.B9Config: instance Show ExecEnvType
- B9.B9Config: instance Show LogLevel
- B9.B9Config: keepTempDirs :: B9Config -> Bool
- B9.B9Config: logFile :: B9Config -> Maybe FilePath
- B9.B9Config: profileFile :: B9Config -> Maybe FilePath
- B9.B9Config: repository :: B9Config -> Maybe String
- B9.B9Config: repositoryCache :: B9Config -> Maybe SystemPath
- B9.B9Config: uniqueBuildDirs :: B9Config -> Bool
- B9.B9Config: verbosity :: B9Config -> Maybe LogLevel
- B9.B9Monad: instance Applicative B9
- B9.B9Monad: instance Eq ProfilingEntry
- B9.B9Monad: instance Functor B9
- B9.B9Monad: instance Monad B9
- B9.B9Monad: instance MonadIO B9
- B9.B9Monad: instance MonadState BuildState B9
- B9.B9Monad: instance Show ProfilingEntry
- B9.ConfigUtils: instance Data SystemPath
- B9.ConfigUtils: instance Eq SystemPath
- B9.ConfigUtils: instance Eq UUID
- B9.ConfigUtils: instance Exception IniFileException
- B9.ConfigUtils: instance Exception ReaderException
- B9.ConfigUtils: instance Ord UUID
- B9.ConfigUtils: instance PrintfArg UUID
- B9.ConfigUtils: instance Read SystemPath
- B9.ConfigUtils: instance Read UUID
- B9.ConfigUtils: instance Show IniFileException
- B9.ConfigUtils: instance Show ReaderException
- B9.ConfigUtils: instance Show SystemPath
- B9.ConfigUtils: instance Show UUID
- B9.ConfigUtils: instance Typeable IniFileException
- B9.ConfigUtils: instance Typeable ReaderException
- B9.ConfigUtils: instance Typeable SystemPath
- B9.Content.AST: instance (Arbitrary c, Arbitrary a) => Arbitrary (AST c a)
- B9.Content.AST: instance (Data c, Data a) => Data (AST c a)
- B9.Content.AST: instance (Eq c, Eq a) => Eq (AST c a)
- B9.Content.AST: instance (Read c, Read a) => Read (AST c a)
- B9.Content.AST: instance (Show c, Show a) => Show (AST c a)
- B9.Content.AST: instance ConcatableSyntax ByteString
- B9.Content.AST: instance Typeable AST
- B9.Content.ErlTerms: instance Arbitrary SimpleErlangTerm
- B9.Content.ErlTerms: instance Data SimpleErlangTerm
- B9.Content.ErlTerms: instance Eq SimpleErlangTerm
- B9.Content.ErlTerms: instance Ord SimpleErlangTerm
- B9.Content.ErlTerms: instance Read SimpleErlangTerm
- B9.Content.ErlTerms: instance Show SimpleErlangTerm
- B9.Content.ErlTerms: instance Typeable SimpleErlangTerm
- B9.Content.ErlangPropList: instance ASTish ErlangPropList
- B9.Content.ErlangPropList: instance Arbitrary ErlangPropList
- B9.Content.ErlangPropList: instance ConcatableSyntax ErlangPropList
- B9.Content.ErlangPropList: instance Data ErlangPropList
- B9.Content.ErlangPropList: instance Eq ErlangPropList
- B9.Content.ErlangPropList: instance Read ErlangPropList
- B9.Content.ErlangPropList: instance Semigroup ErlangPropList
- B9.Content.ErlangPropList: instance Show ErlangPropList
- B9.Content.ErlangPropList: instance Typeable ErlangPropList
- B9.Content.Generator: instance Arbitrary Content
- B9.Content.Generator: instance CanRender Content
- B9.Content.Generator: instance Eq Content
- B9.Content.Generator: instance Read Content
- B9.Content.Generator: instance Show Content
- B9.Content.Generator: instance Typeable Content
- B9.Content.StringTemplate: instance Arbitrary SourceFile
- B9.Content.StringTemplate: instance Data SourceFile
- B9.Content.StringTemplate: instance Data SourceFileConversion
- B9.Content.StringTemplate: instance Eq SourceFile
- B9.Content.StringTemplate: instance Eq SourceFileConversion
- B9.Content.StringTemplate: instance Read SourceFile
- B9.Content.StringTemplate: instance Read SourceFileConversion
- B9.Content.StringTemplate: instance Show SourceFile
- B9.Content.StringTemplate: instance Show SourceFileConversion
- B9.Content.StringTemplate: instance Typeable SourceFile
- B9.Content.StringTemplate: instance Typeable SourceFileConversion
- B9.Content.YamlObject: instance ASTish YamlObject
- B9.Content.YamlObject: instance Arbitrary YamlObject
- B9.Content.YamlObject: instance ConcatableSyntax YamlObject
- B9.Content.YamlObject: instance Eq YamlObject
- B9.Content.YamlObject: instance Read YamlObject
- B9.Content.YamlObject: instance Semigroup YamlObject
- B9.Content.YamlObject: instance Show YamlObject
- B9.DiskImages: instance Data FileSystem
- B9.DiskImages: instance Data Image
- B9.DiskImages: instance Data ImageDestination
- B9.DiskImages: instance Data ImageResize
- B9.DiskImages: instance Data ImageSize
- B9.DiskImages: instance Data ImageSource
- B9.DiskImages: instance Data ImageTarget
- B9.DiskImages: instance Data ImageType
- B9.DiskImages: instance Data MountPoint
- B9.DiskImages: instance Data Partition
- B9.DiskImages: instance Data SizeUnit
- B9.DiskImages: instance Eq FileSystem
- B9.DiskImages: instance Eq Image
- B9.DiskImages: instance Eq ImageDestination
- B9.DiskImages: instance Eq ImageResize
- B9.DiskImages: instance Eq ImageSize
- B9.DiskImages: instance Eq ImageSource
- B9.DiskImages: instance Eq ImageTarget
- B9.DiskImages: instance Eq ImageType
- B9.DiskImages: instance Eq MountPoint
- B9.DiskImages: instance Eq Partition
- B9.DiskImages: instance Eq SharedImage
- B9.DiskImages: instance Eq SharedImageBuildId
- B9.DiskImages: instance Eq SharedImageDate
- B9.DiskImages: instance Eq SharedImageName
- B9.DiskImages: instance Eq SizeUnit
- B9.DiskImages: instance Ord SharedImage
- B9.DiskImages: instance Ord SharedImageBuildId
- B9.DiskImages: instance Ord SharedImageDate
- B9.DiskImages: instance Ord SharedImageName
- B9.DiskImages: instance Ord SizeUnit
- B9.DiskImages: instance Read FileSystem
- B9.DiskImages: instance Read Image
- B9.DiskImages: instance Read ImageDestination
- B9.DiskImages: instance Read ImageResize
- B9.DiskImages: instance Read ImageSize
- B9.DiskImages: instance Read ImageSource
- B9.DiskImages: instance Read ImageTarget
- B9.DiskImages: instance Read ImageType
- B9.DiskImages: instance Read MountPoint
- B9.DiskImages: instance Read Partition
- B9.DiskImages: instance Read SharedImage
- B9.DiskImages: instance Read SharedImageBuildId
- B9.DiskImages: instance Read SharedImageDate
- B9.DiskImages: instance Read SharedImageName
- B9.DiskImages: instance Read SizeUnit
- B9.DiskImages: instance Show FileSystem
- B9.DiskImages: instance Show Image
- B9.DiskImages: instance Show ImageDestination
- B9.DiskImages: instance Show ImageResize
- B9.DiskImages: instance Show ImageSize
- B9.DiskImages: instance Show ImageSource
- B9.DiskImages: instance Show ImageTarget
- B9.DiskImages: instance Show ImageType
- B9.DiskImages: instance Show MountPoint
- B9.DiskImages: instance Show Partition
- B9.DiskImages: instance Show SharedImage
- B9.DiskImages: instance Show SharedImageBuildId
- B9.DiskImages: instance Show SharedImageDate
- B9.DiskImages: instance Show SharedImageName
- B9.DiskImages: instance Show SizeUnit
- B9.DiskImages: instance Typeable FileSystem
- B9.DiskImages: instance Typeable Image
- B9.DiskImages: instance Typeable ImageDestination
- B9.DiskImages: instance Typeable ImageResize
- B9.DiskImages: instance Typeable ImageSize
- B9.DiskImages: instance Typeable ImageSource
- B9.DiskImages: instance Typeable ImageTarget
- B9.DiskImages: instance Typeable ImageType
- B9.DiskImages: instance Typeable MountPoint
- B9.DiskImages: instance Typeable Partition
- B9.DiskImages: instance Typeable SizeUnit
- B9.ExecEnv: cpuArch :: Resources -> CPUArch
- B9.ExecEnv: cpuCount :: Resources -> Int
- B9.ExecEnv: envImageMounts :: ExecEnv -> [Mounted Image]
- B9.ExecEnv: envName :: ExecEnv -> String
- B9.ExecEnv: envResources :: ExecEnv -> Resources
- B9.ExecEnv: envSharedDirectories :: ExecEnv -> [SharedDirectory]
- B9.ExecEnv: instance Data CPUArch
- B9.ExecEnv: instance Data RamSize
- B9.ExecEnv: instance Data Resources
- B9.ExecEnv: instance Data SharedDirectory
- B9.ExecEnv: instance Eq CPUArch
- B9.ExecEnv: instance Eq RamSize
- B9.ExecEnv: instance Eq SharedDirectory
- B9.ExecEnv: instance Monoid CPUArch
- B9.ExecEnv: instance Monoid RamSize
- B9.ExecEnv: instance Monoid Resources
- B9.ExecEnv: instance Ord RamSize
- B9.ExecEnv: instance Read CPUArch
- B9.ExecEnv: instance Read RamSize
- B9.ExecEnv: instance Read Resources
- B9.ExecEnv: instance Read SharedDirectory
- B9.ExecEnv: instance Show CPUArch
- B9.ExecEnv: instance Show RamSize
- B9.ExecEnv: instance Show Resources
- B9.ExecEnv: instance Show SharedDirectory
- B9.ExecEnv: instance Typeable CPUArch
- B9.ExecEnv: instance Typeable RamSize
- B9.ExecEnv: instance Typeable Resources
- B9.ExecEnv: instance Typeable SharedDirectory
- B9.ExecEnv: maxMemory :: Resources -> RamSize
- B9.LibVirtLXC: instance Read LXCGuestCapability
- B9.LibVirtLXC: instance Read LibVirtLXCConfig
- B9.LibVirtLXC: instance Show LXCGuestCapability
- B9.LibVirtLXC: instance Show LibVirtLXCConfig
- B9.MBR: chsH :: CHS -> !Word8
- B9.MBR: chs_CLower8 :: CHS -> !Word8
- B9.MBR: chs_CUpper2_S :: CHS -> !Word8
- B9.MBR: instance Show CHS
- B9.MBR: instance Show MBR
- B9.MBR: instance Show PrimaryPartition
- B9.MBR: mbrPart1 :: MBR -> !PrimaryPartition
- B9.MBR: mbrPart2 :: MBR -> !PrimaryPartition
- B9.MBR: mbrPart3 :: MBR -> !PrimaryPartition
- B9.MBR: mbrPart4 :: MBR -> !PrimaryPartition
- B9.MBR: primPartChsEnd :: PrimaryPartition -> !CHS
- B9.MBR: primPartChsStart :: PrimaryPartition -> !CHS
- B9.MBR: primPartLbaStart :: PrimaryPartition -> !Word32
- B9.MBR: primPartPartType :: PrimaryPartition -> !Word8
- B9.MBR: primPartSectors :: PrimaryPartition -> !Word32
- B9.MBR: primPartStatus :: PrimaryPartition -> !Word8
- B9.Repository: instance Data RemoteRepo
- B9.Repository: instance Data RepoCache
- B9.Repository: instance Data SshPrivKey
- B9.Repository: instance Data SshRemoteHost
- B9.Repository: instance Data SshRemoteUser
- B9.Repository: instance Read RemoteRepo
- B9.Repository: instance Read RepoCache
- B9.Repository: instance Read SshPrivKey
- B9.Repository: instance Read SshRemoteHost
- B9.Repository: instance Read SshRemoteUser
- B9.Repository: instance Show RemoteRepo
- B9.Repository: instance Show RepoCache
- B9.Repository: instance Show SshPrivKey
- B9.Repository: instance Show SshRemoteHost
- B9.Repository: instance Show SshRemoteUser
- B9.Repository: instance Typeable RemoteRepo
- B9.Repository: instance Typeable RepoCache
- B9.Repository: instance Typeable SshPrivKey
- B9.Repository: instance Typeable SshRemoteHost
- B9.Repository: instance Typeable SshRemoteUser
- B9.RepositoryIO: instance Eq Repository
- B9.RepositoryIO: instance Ord Repository
- B9.RepositoryIO: instance Read Repository
- B9.RepositoryIO: instance Show Repository
- B9.ShellScript: instance Data CmdVerbosity
- B9.ShellScript: instance Data Script
- B9.ShellScript: instance Eq CmdVerbosity
- B9.ShellScript: instance Eq Script
- B9.ShellScript: instance Monoid Script
- B9.ShellScript: instance Read Cmd
- B9.ShellScript: instance Read CmdVerbosity
- B9.ShellScript: instance Read Cwd
- B9.ShellScript: instance Read Script
- B9.ShellScript: instance Read User
- B9.ShellScript: instance Show Cmd
- B9.ShellScript: instance Show CmdVerbosity
- B9.ShellScript: instance Show Cwd
- B9.ShellScript: instance Show Script
- B9.ShellScript: instance Show User
- B9.ShellScript: instance Typeable CmdVerbosity
- B9.ShellScript: instance Typeable Script
- B9.Vm: instance Data VmScript
- B9.Vm: instance Eq VmScript
- B9.Vm: instance Read VmScript
- B9.Vm: instance Show VmScript
- B9.Vm: instance Typeable VmScript
+ B9.ArtifactGenerator: instance Data.Data.Data B9.ArtifactGenerator.ArtifactAssembly
+ B9.ArtifactGenerator: instance Data.Data.Data B9.ArtifactGenerator.ArtifactTarget
+ B9.ArtifactGenerator: instance Data.Data.Data B9.ArtifactGenerator.AssembledArtifact
+ B9.ArtifactGenerator: instance Data.Data.Data B9.ArtifactGenerator.CloudInitType
+ B9.ArtifactGenerator: instance Data.Data.Data B9.ArtifactGenerator.InstanceId
+ B9.ArtifactGenerator: instance GHC.Base.Monoid B9.ArtifactGenerator.ArtifactGenerator
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.ArtifactAssembly
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.ArtifactGenerator
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.ArtifactSource
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.ArtifactTarget
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.AssembledArtifact
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.CloudInitType
+ B9.ArtifactGenerator: instance GHC.Classes.Eq B9.ArtifactGenerator.InstanceId
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.ArtifactAssembly
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.ArtifactGenerator
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.ArtifactSource
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.ArtifactTarget
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.AssembledArtifact
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.CloudInitType
+ B9.ArtifactGenerator: instance GHC.Read.Read B9.ArtifactGenerator.InstanceId
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.ArtifactAssembly
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.ArtifactGenerator
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.ArtifactSource
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.ArtifactTarget
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.AssembledArtifact
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.CloudInitType
+ B9.ArtifactGenerator: instance GHC.Show.Show B9.ArtifactGenerator.InstanceId
+ B9.ArtifactGenerator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.ArtifactGenerator.ArtifactAssembly
+ B9.ArtifactGenerator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.ArtifactGenerator.ArtifactGenerator
+ B9.ArtifactGenerator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.ArtifactGenerator.ArtifactSource
+ B9.ArtifactGenerator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.ArtifactGenerator.CloudInitType
+ B9.ArtifactGenerator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.ArtifactGenerator.InstanceId
+ B9.ArtifactGeneratorImpl: [agEnv] :: CGEnv -> [(String, String)]
+ B9.ArtifactGeneratorImpl: [agSources] :: CGEnv -> [ArtifactSource]
+ B9.ArtifactGeneratorImpl: [runCGParser] :: CGParser a -> WriterT [InstanceGenerator CGEnv] (ReaderT CGEnv (Either CGError)) a
+ B9.ArtifactGeneratorImpl: evalArtifactGenerator :: String -> String -> BuildVariables -> ArtifactGenerator -> Either String [InstanceGenerator [SourceGenerator]]
+ B9.ArtifactGeneratorImpl: instance Control.Monad.Error.Class.MonadError B9.ArtifactGeneratorImpl.CGError B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance Control.Monad.Reader.Class.MonadReader B9.ArtifactGeneratorImpl.CGEnv B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance Control.Monad.Trans.Error.Error B9.ArtifactGeneratorImpl.CGError
+ B9.ArtifactGeneratorImpl: instance Control.Monad.Writer.Class.MonadWriter [B9.ArtifactGeneratorImpl.InstanceGenerator B9.ArtifactGeneratorImpl.CGEnv] B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance Data.Data.Data B9.ArtifactGeneratorImpl.CGError
+ B9.ArtifactGeneratorImpl: instance Data.Data.Data B9.ArtifactGeneratorImpl.SGPerm
+ B9.ArtifactGeneratorImpl: instance Data.Data.Data B9.ArtifactGeneratorImpl.SGType
+ B9.ArtifactGeneratorImpl: instance Data.Data.Data e => Data.Data.Data (B9.ArtifactGeneratorImpl.InstanceGenerator e)
+ B9.ArtifactGeneratorImpl: instance GHC.Base.Applicative B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance GHC.Base.Functor B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance GHC.Base.Monad B9.ArtifactGeneratorImpl.CGParser
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.CGEnv
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.CGError
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.SGPerm
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.SGSource
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.SGType
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq B9.ArtifactGeneratorImpl.SourceGenerator
+ B9.ArtifactGeneratorImpl: instance GHC.Classes.Eq e => GHC.Classes.Eq (B9.ArtifactGeneratorImpl.InstanceGenerator e)
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.CGEnv
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.CGError
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.SGPerm
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.SGSource
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.SGType
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read B9.ArtifactGeneratorImpl.SourceGenerator
+ B9.ArtifactGeneratorImpl: instance GHC.Read.Read e => GHC.Read.Read (B9.ArtifactGeneratorImpl.InstanceGenerator e)
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.CGEnv
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.CGError
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.SGPerm
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.SGSource
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.SGType
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show B9.ArtifactGeneratorImpl.SourceGenerator
+ B9.ArtifactGeneratorImpl: instance GHC.Show.Show e => GHC.Show.Show (B9.ArtifactGeneratorImpl.InstanceGenerator e)
+ B9.B9Config: [buildDirRoot] :: B9Config -> Maybe FilePath
+ B9.B9Config: [envVars] :: B9Config -> BuildVariables
+ B9.B9Config: [execEnvType] :: B9Config -> ExecEnvType
+ B9.B9Config: [keepTempDirs] :: B9Config -> Bool
+ B9.B9Config: [logFile] :: B9Config -> Maybe FilePath
+ B9.B9Config: [profileFile] :: B9Config -> Maybe FilePath
+ B9.B9Config: [repositoryCache] :: B9Config -> Maybe SystemPath
+ B9.B9Config: [repository] :: B9Config -> Maybe String
+ B9.B9Config: [uniqueBuildDirs] :: B9Config -> Bool
+ B9.B9Config: [verbosity] :: B9Config -> Maybe LogLevel
+ B9.B9Config: instance GHC.Base.Monoid B9.B9Config.B9Config
+ B9.B9Config: instance GHC.Classes.Eq B9.B9Config.ExecEnvType
+ B9.B9Config: instance GHC.Classes.Eq B9.B9Config.LogLevel
+ B9.B9Config: instance GHC.Classes.Ord B9.B9Config.ExecEnvType
+ B9.B9Config: instance GHC.Classes.Ord B9.B9Config.LogLevel
+ B9.B9Config: instance GHC.Read.Read B9.B9Config.ExecEnvType
+ B9.B9Config: instance GHC.Read.Read B9.B9Config.LogLevel
+ B9.B9Config: instance GHC.Show.Show B9.B9Config.B9Config
+ B9.B9Config: instance GHC.Show.Show B9.B9Config.ExecEnvType
+ B9.B9Config: instance GHC.Show.Show B9.B9Config.LogLevel
+ B9.B9Monad: instance Control.Monad.IO.Class.MonadIO B9.B9Monad.B9
+ B9.B9Monad: instance Control.Monad.State.Class.MonadState B9.B9Monad.BuildState B9.B9Monad.B9
+ B9.B9Monad: instance GHC.Base.Applicative B9.B9Monad.B9
+ B9.B9Monad: instance GHC.Base.Functor B9.B9Monad.B9
+ B9.B9Monad: instance GHC.Base.Monad B9.B9Monad.B9
+ B9.B9Monad: instance GHC.Classes.Eq B9.B9Monad.ProfilingEntry
+ B9.B9Monad: instance GHC.Show.Show B9.B9Monad.ProfilingEntry
+ B9.ConfigUtils: instance Data.Data.Data B9.ConfigUtils.SystemPath
+ B9.ConfigUtils: instance GHC.Classes.Eq B9.ConfigUtils.SystemPath
+ B9.ConfigUtils: instance GHC.Classes.Eq B9.ConfigUtils.UUID
+ B9.ConfigUtils: instance GHC.Classes.Ord B9.ConfigUtils.UUID
+ B9.ConfigUtils: instance GHC.Exception.Exception B9.ConfigUtils.IniFileException
+ B9.ConfigUtils: instance GHC.Exception.Exception B9.ConfigUtils.ReaderException
+ B9.ConfigUtils: instance GHC.Read.Read B9.ConfigUtils.SystemPath
+ B9.ConfigUtils: instance GHC.Read.Read B9.ConfigUtils.UUID
+ B9.ConfigUtils: instance GHC.Show.Show B9.ConfigUtils.IniFileException
+ B9.ConfigUtils: instance GHC.Show.Show B9.ConfigUtils.ReaderException
+ B9.ConfigUtils: instance GHC.Show.Show B9.ConfigUtils.SystemPath
+ B9.ConfigUtils: instance GHC.Show.Show B9.ConfigUtils.UUID
+ B9.ConfigUtils: instance Text.Printf.PrintfArg B9.ConfigUtils.UUID
+ B9.Content.AST: instance (Data.Data.Data c, Data.Data.Data a) => Data.Data.Data (B9.Content.AST.AST c a)
+ B9.Content.AST: instance (GHC.Classes.Eq c, GHC.Classes.Eq a) => GHC.Classes.Eq (B9.Content.AST.AST c a)
+ B9.Content.AST: instance (GHC.Read.Read c, GHC.Read.Read a) => GHC.Read.Read (B9.Content.AST.AST c a)
+ B9.Content.AST: instance (GHC.Show.Show c, GHC.Show.Show a) => GHC.Show.Show (B9.Content.AST.AST c a)
+ B9.Content.AST: instance (Test.QuickCheck.Arbitrary.Arbitrary c, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (B9.Content.AST.AST c a)
+ B9.Content.AST: instance B9.Content.AST.ConcatableSyntax Data.ByteString.Internal.ByteString
+ B9.Content.ErlTerms: instance Data.Data.Data B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlTerms: instance GHC.Classes.Eq B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlTerms: instance GHC.Classes.Ord B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlTerms: instance GHC.Read.Read B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlTerms: instance GHC.Show.Show B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlTerms: instance Test.QuickCheck.Arbitrary.Arbitrary B9.Content.ErlTerms.SimpleErlangTerm
+ B9.Content.ErlangPropList: instance B9.Content.AST.ASTish B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance B9.Content.AST.ConcatableSyntax B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance Data.Data.Data B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance Data.Semigroup.Semigroup B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance GHC.Classes.Eq B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance GHC.Read.Read B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance GHC.Show.Show B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.ErlangPropList: instance Test.QuickCheck.Arbitrary.Arbitrary B9.Content.ErlangPropList.ErlangPropList
+ B9.Content.Generator: instance B9.Content.AST.CanRender B9.Content.Generator.Content
+ B9.Content.Generator: instance GHC.Classes.Eq B9.Content.Generator.Content
+ B9.Content.Generator: instance GHC.Read.Read B9.Content.Generator.Content
+ B9.Content.Generator: instance GHC.Show.Show B9.Content.Generator.Content
+ B9.Content.Generator: instance Test.QuickCheck.Arbitrary.Arbitrary B9.Content.Generator.Content
+ B9.Content.StringTemplate: instance Data.Data.Data B9.Content.StringTemplate.SourceFile
+ B9.Content.StringTemplate: instance Data.Data.Data B9.Content.StringTemplate.SourceFileConversion
+ B9.Content.StringTemplate: instance GHC.Classes.Eq B9.Content.StringTemplate.SourceFile
+ B9.Content.StringTemplate: instance GHC.Classes.Eq B9.Content.StringTemplate.SourceFileConversion
+ B9.Content.StringTemplate: instance GHC.Read.Read B9.Content.StringTemplate.SourceFile
+ B9.Content.StringTemplate: instance GHC.Read.Read B9.Content.StringTemplate.SourceFileConversion
+ B9.Content.StringTemplate: instance GHC.Show.Show B9.Content.StringTemplate.SourceFile
+ B9.Content.StringTemplate: instance GHC.Show.Show B9.Content.StringTemplate.SourceFileConversion
+ B9.Content.StringTemplate: instance Test.QuickCheck.Arbitrary.Arbitrary B9.Content.StringTemplate.SourceFile
+ B9.Content.YamlObject: instance B9.Content.AST.ASTish B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance B9.Content.AST.ConcatableSyntax B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance Data.Semigroup.Semigroup B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance GHC.Classes.Eq B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance GHC.Read.Read B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance GHC.Show.Show B9.Content.YamlObject.YamlObject
+ B9.Content.YamlObject: instance Test.QuickCheck.Arbitrary.Arbitrary B9.Content.YamlObject.YamlObject
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.FileSystem
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.Image
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageDestination
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageResize
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageSize
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageSource
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageTarget
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.ImageType
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.MountPoint
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.Partition
+ B9.DiskImages: instance Data.Data.Data B9.DiskImages.SizeUnit
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.FileSystem
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.Image
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageDestination
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageResize
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageSize
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageSource
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageTarget
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.ImageType
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.MountPoint
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.Partition
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.SharedImage
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.SharedImageBuildId
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.SharedImageDate
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.SharedImageName
+ B9.DiskImages: instance GHC.Classes.Eq B9.DiskImages.SizeUnit
+ B9.DiskImages: instance GHC.Classes.Ord B9.DiskImages.SharedImage
+ B9.DiskImages: instance GHC.Classes.Ord B9.DiskImages.SharedImageBuildId
+ B9.DiskImages: instance GHC.Classes.Ord B9.DiskImages.SharedImageDate
+ B9.DiskImages: instance GHC.Classes.Ord B9.DiskImages.SharedImageName
+ B9.DiskImages: instance GHC.Classes.Ord B9.DiskImages.SizeUnit
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.FileSystem
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.Image
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageDestination
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageResize
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageSize
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageSource
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageTarget
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.ImageType
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.MountPoint
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.Partition
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.SharedImage
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.SharedImageBuildId
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.SharedImageDate
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.SharedImageName
+ B9.DiskImages: instance GHC.Read.Read B9.DiskImages.SizeUnit
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.FileSystem
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.Image
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageDestination
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageResize
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageSize
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageSource
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageTarget
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.ImageType
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.MountPoint
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.Partition
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.SharedImage
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.SharedImageBuildId
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.SharedImageDate
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.SharedImageName
+ B9.DiskImages: instance GHC.Show.Show B9.DiskImages.SizeUnit
+ B9.ExecEnv: [cpuArch] :: Resources -> CPUArch
+ B9.ExecEnv: [cpuCount] :: Resources -> Int
+ B9.ExecEnv: [envImageMounts] :: ExecEnv -> [Mounted Image]
+ B9.ExecEnv: [envName] :: ExecEnv -> String
+ B9.ExecEnv: [envResources] :: ExecEnv -> Resources
+ B9.ExecEnv: [envSharedDirectories] :: ExecEnv -> [SharedDirectory]
+ B9.ExecEnv: [maxMemory] :: Resources -> RamSize
+ B9.ExecEnv: instance Data.Data.Data B9.ExecEnv.CPUArch
+ B9.ExecEnv: instance Data.Data.Data B9.ExecEnv.RamSize
+ B9.ExecEnv: instance Data.Data.Data B9.ExecEnv.Resources
+ B9.ExecEnv: instance Data.Data.Data B9.ExecEnv.SharedDirectory
+ B9.ExecEnv: instance GHC.Base.Monoid B9.ExecEnv.CPUArch
+ B9.ExecEnv: instance GHC.Base.Monoid B9.ExecEnv.RamSize
+ B9.ExecEnv: instance GHC.Base.Monoid B9.ExecEnv.Resources
+ B9.ExecEnv: instance GHC.Classes.Eq B9.ExecEnv.CPUArch
+ B9.ExecEnv: instance GHC.Classes.Eq B9.ExecEnv.RamSize
+ B9.ExecEnv: instance GHC.Classes.Eq B9.ExecEnv.SharedDirectory
+ B9.ExecEnv: instance GHC.Classes.Ord B9.ExecEnv.RamSize
+ B9.ExecEnv: instance GHC.Read.Read B9.ExecEnv.CPUArch
+ B9.ExecEnv: instance GHC.Read.Read B9.ExecEnv.RamSize
+ B9.ExecEnv: instance GHC.Read.Read B9.ExecEnv.Resources
+ B9.ExecEnv: instance GHC.Read.Read B9.ExecEnv.SharedDirectory
+ B9.ExecEnv: instance GHC.Show.Show B9.ExecEnv.CPUArch
+ B9.ExecEnv: instance GHC.Show.Show B9.ExecEnv.RamSize
+ B9.ExecEnv: instance GHC.Show.Show B9.ExecEnv.Resources
+ B9.ExecEnv: instance GHC.Show.Show B9.ExecEnv.SharedDirectory
+ B9.LibVirtLXC: instance GHC.Read.Read B9.LibVirtLXC.LXCGuestCapability
+ B9.LibVirtLXC: instance GHC.Read.Read B9.LibVirtLXC.LibVirtLXCConfig
+ B9.LibVirtLXC: instance GHC.Show.Show B9.LibVirtLXC.LXCGuestCapability
+ B9.LibVirtLXC: instance GHC.Show.Show B9.LibVirtLXC.LibVirtLXCConfig
+ B9.MBR: [chsH] :: CHS -> !Word8
+ B9.MBR: [chs_CLower8] :: CHS -> !Word8
+ B9.MBR: [chs_CUpper2_S] :: CHS -> !Word8
+ B9.MBR: [mbrPart1] :: MBR -> !PrimaryPartition
+ B9.MBR: [mbrPart2] :: MBR -> !PrimaryPartition
+ B9.MBR: [mbrPart3] :: MBR -> !PrimaryPartition
+ B9.MBR: [mbrPart4] :: MBR -> !PrimaryPartition
+ B9.MBR: [primPartChsEnd] :: PrimaryPartition -> !CHS
+ B9.MBR: [primPartChsStart] :: PrimaryPartition -> !CHS
+ B9.MBR: [primPartLbaStart] :: PrimaryPartition -> !Word32
+ B9.MBR: [primPartPartType] :: PrimaryPartition -> !Word8
+ B9.MBR: [primPartSectors] :: PrimaryPartition -> !Word32
+ B9.MBR: [primPartStatus] :: PrimaryPartition -> !Word8
+ B9.MBR: instance GHC.Show.Show B9.MBR.CHS
+ B9.MBR: instance GHC.Show.Show B9.MBR.MBR
+ B9.MBR: instance GHC.Show.Show B9.MBR.PrimaryPartition
+ B9.Repository: instance Data.Data.Data B9.Repository.RemoteRepo
+ B9.Repository: instance Data.Data.Data B9.Repository.RepoCache
+ B9.Repository: instance Data.Data.Data B9.Repository.SshPrivKey
+ B9.Repository: instance Data.Data.Data B9.Repository.SshRemoteHost
+ B9.Repository: instance Data.Data.Data B9.Repository.SshRemoteUser
+ B9.Repository: instance GHC.Read.Read B9.Repository.RemoteRepo
+ B9.Repository: instance GHC.Read.Read B9.Repository.RepoCache
+ B9.Repository: instance GHC.Read.Read B9.Repository.SshPrivKey
+ B9.Repository: instance GHC.Read.Read B9.Repository.SshRemoteHost
+ B9.Repository: instance GHC.Read.Read B9.Repository.SshRemoteUser
+ B9.Repository: instance GHC.Show.Show B9.Repository.RemoteRepo
+ B9.Repository: instance GHC.Show.Show B9.Repository.RepoCache
+ B9.Repository: instance GHC.Show.Show B9.Repository.SshPrivKey
+ B9.Repository: instance GHC.Show.Show B9.Repository.SshRemoteHost
+ B9.Repository: instance GHC.Show.Show B9.Repository.SshRemoteUser
+ B9.RepositoryIO: instance GHC.Classes.Eq B9.RepositoryIO.Repository
+ B9.RepositoryIO: instance GHC.Classes.Ord B9.RepositoryIO.Repository
+ B9.RepositoryIO: instance GHC.Read.Read B9.RepositoryIO.Repository
+ B9.RepositoryIO: instance GHC.Show.Show B9.RepositoryIO.Repository
+ B9.ShellScript: instance Data.Data.Data B9.ShellScript.CmdVerbosity
+ B9.ShellScript: instance Data.Data.Data B9.ShellScript.Script
+ B9.ShellScript: instance GHC.Base.Monoid B9.ShellScript.Script
+ B9.ShellScript: instance GHC.Classes.Eq B9.ShellScript.CmdVerbosity
+ B9.ShellScript: instance GHC.Classes.Eq B9.ShellScript.Script
+ B9.ShellScript: instance GHC.Read.Read B9.ShellScript.Cmd
+ B9.ShellScript: instance GHC.Read.Read B9.ShellScript.CmdVerbosity
+ B9.ShellScript: instance GHC.Read.Read B9.ShellScript.Cwd
+ B9.ShellScript: instance GHC.Read.Read B9.ShellScript.Script
+ B9.ShellScript: instance GHC.Read.Read B9.ShellScript.User
+ B9.ShellScript: instance GHC.Show.Show B9.ShellScript.Cmd
+ B9.ShellScript: instance GHC.Show.Show B9.ShellScript.CmdVerbosity
+ B9.ShellScript: instance GHC.Show.Show B9.ShellScript.Cwd
+ B9.ShellScript: instance GHC.Show.Show B9.ShellScript.Script
+ B9.ShellScript: instance GHC.Show.Show B9.ShellScript.User
+ B9.Vm: instance Data.Data.Data B9.Vm.VmScript
+ B9.Vm: instance GHC.Classes.Eq B9.Vm.VmScript
+ B9.Vm: instance GHC.Read.Read B9.Vm.VmScript
+ B9.Vm: instance GHC.Show.Show B9.Vm.VmScript
- B9.Content.AST: class ConcatableSyntax a => ASTish a
+ B9.Content.AST: class (ConcatableSyntax a) => ASTish a
- B9.Content.AST: class Semigroup a => ConcatableSyntax a
+ B9.Content.AST: class (Semigroup a) => ConcatableSyntax a
Files
- .gitignore +0/−1
- b9.cabal +27/−26
- build_and_test.sh +1/−0
- installDeps.sh +0/−21
- prepare_release.sh +2/−1
- run.sh +0/−13
- src/lib/B9/ArtifactGeneratorImpl.hs +99/−79
- src/lib/B9/B9Monad.hs +1/−1
- src/lib/B9/ConfigUtils.hs +18/−16
- src/lib/B9/Content/ErlTerms.hs +9/−7
- src/lib/B9/LibVirtLXC.hs +2/−2
.gitignore view
@@ -6,7 +6,6 @@ /BUILD-* /dist /OUT-/cabal.config /.cabal-sandbox/ /cabal.sandbox.config
b9.cabal view
@@ -1,5 +1,5 @@ name: b9-version: 0.4.1+version: 0.5.2 synopsis: A tool and library for building virtual machine images. @@ -48,8 +48,8 @@ copyright: 2015 Sven Heyll <svh@posteo.de> category: Development build-type: Simple-extra-source-files: README.md, build_and_run.sh, build_and_test.sh, build_haddock.sh, installDeps.sh,- run.sh, LICENSE, TODO.org, Setup.hs, b9.cabal, .gitignore, prepare_release.sh, .travis.yml, CONTRIBUTORS+extra-source-files: README.md, build_and_run.sh, build_and_test.sh, build_haddock.sh,+ LICENSE, TODO.org, Setup.hs, b9.cabal, .gitignore, prepare_release.sh, .travis.yml, CONTRIBUTORS cabal-version: >=1.10 source-repository head@@ -84,34 +84,35 @@ , B9.QCUtil other-modules: Paths_b9 -- other-extensions:- build-depends: ConfigFile >= 1.1.3 && <1.2+ build-depends: ConfigFile , QuickCheck , aeson- , async >=2.0.1 && <2.1- , base >=4.6 && <4.8- , binary >=0.7 && <0.8- , bytestring >=0.10 && <0.11- , conduit >=1.2 && <1.3- , conduit-extra >=1.1 && <1.2- , directory >=1.2 && <1.3- , filepath >=1.3 && <1.4- , mtl >=2.1 && <2.2- , old-locale >=1.0 && <1.1- , parsec >= 3.1.8+ , async+ , base >= 4.7 && < 5+ , binary+ , bytestring+ , conduit+ , conduit-extra+ , directory+ , filepath+ , mtl+ , old-locale+ , parsec , pretty-show , pretty- , process >=1.2 && <1.3- , random >=1.0 && <1.2+ , process+ , random , semigroups- , syb >= 0.4.4 && <0.5+ , syb , template- , text >= 1.2.0.4- , time >=1.4 && <1.5- , transformers >=0.3 && <0.4+ , text+ , time+ , transformers , unordered-containers- , vector >= 0.10.12.2+ , vector , yaml , bifunctors+ , free default-extensions: TupleSections , GeneralizedNewtypeDeriving , DeriveDataTypeable@@ -128,9 +129,9 @@ -- other-modules: -- other-extensions: build-depends: b9- , base >=4.6 && <4.8- , bytestring >=0.10 && <0.11- , optparse-applicative >= 0.11.0.1+ , base >= 4.7 && < 5+ , bytestring+ , optparse-applicative hs-source-dirs: src/cli default-language: Haskell2010 ghc-options: -O3 -threaded -with-rtsopts=-N -Wall -Wall@@ -146,7 +147,7 @@ , B9.Content.ErlangPropListSpec , B9.Content.YamlObjectSpec , B9.ArtifactGeneratorImplSpec- build-depends: base >=4.6 && <4.8+ build-depends: base >= 4.7 && < 5 , b9 , hspec , hspec-expectations
build_and_test.sh view
@@ -7,6 +7,7 @@ PATH="$(pwd)/.cabal-sandbox/bin:$PATH" +cabal install -j --enable-tests --dependencies-only cabal configure --enable-tests --disable-optimization cabal build ./dist/build/spec/spec
− installDeps.sh
@@ -1,21 +0,0 @@-#!/bin/bash-#-# Install the latest stackage lts snapshot, run cabal clean/update and-# initialize the cabal sandbox.-#-set -e--PATH="$(pwd)/.cabal-sandbox/bin:$PATH"--cabal clean -v-cabal sandbox delete -v || echo "IGNORING"--rm -f cabal.config-wget http://www.stackage.org/lts/cabal.config--cabal update -v-cabal sandbox -v init--cabal install happy alex haddock--cabal install -v --only-dependencies --enable-tests -j
prepare_release.sh view
@@ -11,7 +11,8 @@ PATH="$(pwd)/.cabal-sandbox/bin:$PATH" -./installDeps.sh ./build_and_test.sh ./build_haddock.sh cabal check+cabal sdist+
− run.sh
@@ -1,13 +0,0 @@-#!/bin/sh--# Execute 'b9', if necessary compile it.--set -e--PATH="$(pwd)/.cabal-sandbox/bin:$PATH"--if [[ ! -x .cabal-sandbox/bin/b9c ]]; then- cabal install-fi--.cabal-sandbox/bin/b9c $@
src/lib/B9/ArtifactGeneratorImpl.hs view
@@ -39,22 +39,31 @@ b9cfgEnvVars <- envVars <$> getConfig buildId <- getBuildId buildDate <- getBuildDate+ case evalArtifactGenerator buildId buildDate b9cfgEnvVars artGen of+ Left err -> error err+ Right is -> createAssembledArtifacts is++-- | Evaluate an 'ArtifactGenerator' into a list of low-level build instructions+-- that can be built with 'createAssembledArtifacts'.+evalArtifactGenerator :: String+ -> String+ -> BuildVariables+ -> ArtifactGenerator+ -> Either String [InstanceGenerator [SourceGenerator]]+evalArtifactGenerator buildId buildDate b9cfgEnvVars artGen = let ag = parseArtifactGenerator artGen- e = CGEnv- ((buildDateKey, buildDate):(buildIdKey, buildId):b9cfgEnvVars)- []- case execCGParser ag e of+ e = CGEnv ((buildDateKey, buildDate) : (buildIdKey, buildId) : b9cfgEnvVars) []+ in case execCGParser ag e of Left (CGError err) ->- error (printf "error parsing: %s: %s" (ppShow artGen) err)+ Left (printf "error parsing: %s: %s" (ppShow artGen) err) Right igs -> case execIGEnv `mapM` igs of- Left err ->- error (printf "Failed to parse:\n%s\nError: %s"- (ppShow artGen)- err)- Right is ->- createAssembledArtifacts is+ Left err ->+ Left (printf "Failed to parse:\n%s\nError: %s" (ppShow artGen) err)+ Right is ->+ Right is +-- | Parse an artifacto generator inside a 'CGParser' monad. parseArtifactGenerator :: ArtifactGenerator -> CGParser () parseArtifactGenerator g = case g of@@ -66,66 +75,72 @@ withXBindings bs (mapM_ parseArtifactGenerator gs) EachT keySet valueSets gs -> do allBindings <- eachBindingSetT g keySet valueSets- mapM_ ($ mapM_ parseArtifactGenerator gs)- (withBindings <$> allBindings)+ mapM_ ($ mapM_ parseArtifactGenerator gs) (withBindings <$> allBindings) Each kvs gs -> do allBindings <- eachBindingSet g kvs- mapM_ ($ mapM_ parseArtifactGenerator gs)- (withBindings <$> allBindings)+ mapM_ ($ mapM_ parseArtifactGenerator gs) (withBindings <$> allBindings) Artifact iid assembly -> writeInstanceGenerator iid assembly EmptyArtifact -> return () +-- | Execute a 'CGParser' action in an environment that contains a list of+-- 'ArtifactSource's. withArtifactSources :: [ArtifactSource] -> CGParser () -> CGParser ()-withArtifactSources srcs = local (\ce -> ce {agSources = agSources ce ++ srcs})+withArtifactSources srcs = local (\ce -> ce { agSources = agSources ce ++ srcs }) withBindings :: [(String,String)] -> CGParser () -> CGParser () withBindings bs = local (addBindings bs) addBindings :: [(String, String)] -> CGEnv -> CGEnv addBindings bs ce =- let addBinding env (k,v) = nubBy ((==) `on` fst) ((k, subst env v):env)+ let addBinding env (k, v) = nubBy ((==) `on` fst) ((k, subst env v) : env) newEnv = foldl addBinding (agEnv ce) bs in ce { agEnv = newEnv } withXBindings :: [(String,[String])] -> CGParser () -> CGParser () withXBindings bs cp = do (flip local cp) `mapM_` (addBindings <$> (allXBindings bs))+ where- allXBindings ((k,vs):rest) = [(k,v):c | v <- vs, c <- allXBindings rest]+ allXBindings ((k, vs):rest) = [(k, v) : c | v <- vs+ , c <- allXBindings rest] allXBindings [] = [[]] eachBindingSetT :: ArtifactGenerator -> [String] -> [[String]]- -> CGParser [[(String,String)]]+ -> CGParser [[(String, String)]] eachBindingSetT g vars valueSets = if all ((== length vars) . length) valueSets- then return (zip vars <$> valueSets)- else (cgError (printf "Error in 'Each' binding during artifact \+ then return (zip vars <$> valueSets)+ else (cgError+ (printf+ "Error in 'Each' binding during artifact \ \generation in:\n '%s'.\n\nThe variable list\n\ \%s\n has %i entries, but this binding set\n%s\n\n\ \has a different number of entries!\n"- (ppShow g)- (ppShow vars)- (length vars)- (ppShow (head (dropWhile ((== length vars) . length)- valueSets)))))+ (ppShow g)+ (ppShow vars)+ (length vars)+ (ppShow (head (dropWhile ((== length vars) . length) valueSets))))) eachBindingSet :: ArtifactGenerator- -> [(String,[String])]- -> CGParser [[(String,String)]]+ -> [(String, [String])]+ -> CGParser [[(String, String)]] eachBindingSet g kvs = do checkInput return bindingSets+ where- bindingSets = transpose [repeat k `zip` vs | (k, vs) <- kvs ]+ bindingSets = transpose [repeat k `zip` vs | (k, vs) <- kvs] checkInput = when (1 /= (length $ nub $ length . snd <$> kvs))- (cgError (printf "Error in 'Each' binding: \n%s\n\+ (cgError+ (printf+ "Error in 'Each' binding: \n%s\n\ \All value lists must have the same\ \length!"- (ppShow g)))+ (ppShow g))) writeInstanceGenerator :: InstanceId -> ArtifactAssembly -> CGParser ()@@ -138,19 +153,11 @@ -- | Monad for creating Instance generators. newtype CGParser a =- CGParser { runCGParser :: WriterT [InstanceGenerator CGEnv]- (ReaderT CGEnv- (Either CGError))- a- }- deriving ( Functor, Applicative, Monad- , MonadReader CGEnv- , MonadWriter [InstanceGenerator CGEnv]- , MonadError CGError- )+ CGParser+ { runCGParser :: WriterT [InstanceGenerator CGEnv] (ReaderT CGEnv (Either CGError)) a }+ deriving (Functor, Applicative, Monad, MonadReader CGEnv, MonadWriter [InstanceGenerator CGEnv], MonadError CGError) -data CGEnv = CGEnv { agEnv :: [(String, String)]- , agSources :: [ArtifactSource] }+data CGEnv = CGEnv { agEnv :: [(String, String)], agSources :: [ArtifactSource] } deriving (Read, Show, Eq) data InstanceGenerator e = IG InstanceId e ArtifactAssembly@@ -171,20 +178,22 @@ -> Either String (InstanceGenerator [SourceGenerator]) execIGEnv (IG iid (CGEnv env sources) assembly) = do IG iid <$> sourceGens <*> pure (substAssembly env assembly)+ where sourceGens = join <$> mapM (toSourceGen env) sources -substAssembly :: [(String,String)] -> ArtifactAssembly -> ArtifactAssembly+substAssembly :: [(String, String)] -> ArtifactAssembly -> ArtifactAssembly substAssembly env p = everywhere gsubst p- where gsubst :: forall a. Data a => a -> a- gsubst = mkT substAssembly_- `extT` (substImageTarget env)- `extT` (substVmScript env)+ where+ gsubst :: Data a => a -> a+ gsubst = mkT substAssembly_+ `extT` (substImageTarget env)+ `extT` (substVmScript env) - substAssembly_ (CloudInit ts f) = CloudInit ts (sub f)- substAssembly_ vm = vm+ substAssembly_ (CloudInit ts f) = CloudInit ts (sub f)+ substAssembly_ vm = vm - sub = subst env+ sub = subst env toSourceGen :: [(String, String)] -> ArtifactSource@@ -251,35 +260,38 @@ let toAbs = instanceDir </> to ensureDir toAbs result <- case sgSource of- SGFiles froms -> do- sources <- mapM (sgReadSourceFile env) froms- return (mconcat sources)- SGContent c -> do- withEnvironment env (render c)+ SGFiles froms -> do+ sources <- mapM (sgReadSourceFile env) froms+ return (mconcat sources)+ SGContent c -> do+ withEnvironment env (render c) traceL (printf "rendered: \n%s\n" (T.unpack (E.decodeUtf8 result))) liftIO (B.writeFile toAbs result) sgChangePerm toAbs p -sgReadSourceFile :: [(String,String)] -> SourceFile -> B9 B.ByteString+sgReadSourceFile :: [(String, String)] -> SourceFile -> B9 B.ByteString sgReadSourceFile env = withEnvironment env . readTemplateFile sgChangePerm :: FilePath -> SGPerm -> B9 () sgChangePerm _ KeepPerm = return ()-sgChangePerm f (SGSetPerm (o,g,a)) = cmd (printf "chmod 0%i%i%i '%s'" o g a f)+sgChangePerm f (SGSetPerm (o, g, a)) = cmd (printf "chmod 0%i%i%i '%s'" o g a f) -- | Internal data type simplifying the rather complex source generation by -- bioling down 'ArtifactSource's to a flat list of uniform 'SourceGenerator's.-data SourceGenerator = SGConcat [(String,String)] SGSource SGPerm FilePath+data SourceGenerator = SGConcat [(String, String)] SGSource SGPerm FilePath deriving (Read, Show, Eq) -data SGSource = SGFiles [SourceFile] | SGContent Content+data SGSource = SGFiles [SourceFile]+ | SGContent Content deriving (Read, Show, Eq) -data SGType = SGT | SGF+data SGType = SGT+ | SGF deriving (Read, Show, Typeable, Data, Eq) -data SGPerm = SGSetPerm (Int,Int,Int) | KeepPerm+data SGPerm = SGSetPerm (Int, Int, Int)+ | KeepPerm deriving (Read, Show, Typeable, Data, Eq) @@ -287,19 +299,22 @@ sgGetFroms (SGConcat _ (SGFiles fs) _ _) = fs sgGetFroms _ = [] -setSGPerm :: Int -> Int -> Int -> SourceGenerator+setSGPerm :: Int+ -> Int+ -> Int+ -> SourceGenerator -> Either String SourceGenerator setSGPerm o g a (SGConcat env from KeepPerm dest) =- Right (SGConcat env from (SGSetPerm (o,g,a)) dest)+ Right (SGConcat env from (SGSetPerm (o, g, a)) dest) setSGPerm o g a sg | o < 0 || o > 7 =- Left (printf "Bad 'owner' permission %i in \n%s" o (ppShow sg))+ Left (printf "Bad 'owner' permission %i in \n%s" o (ppShow sg)) | g < 0 || g > 7 =- Left (printf "Bad 'group' permission %i in \n%s" g (ppShow sg))+ Left (printf "Bad 'group' permission %i in \n%s" g (ppShow sg)) | a < 0 || a > 7 =- Left (printf "Bad 'all' permission %i in \n%s" a (ppShow sg))+ Left (printf "Bad 'all' permission %i in \n%s" a (ppShow sg)) | otherwise =- Left (printf "Permission for source already defined:\n %s" (ppShow sg))+ Left (printf "Permission for source already defined:\n %s" (ppShow sg)) setSGFromDirectory :: FilePath -> SourceGenerator -> SourceGenerator setSGFromDirectory fromDir (SGConcat e (SGFiles fs) p d) =@@ -324,6 +339,7 @@ return [VmImagesTarget] createTarget _ instanceDir (CloudInit types outPath) = do mapM create_ types+ where create_ CI_DIR = do let ciDir = outPath@@ -331,11 +347,12 @@ dbgL (printf "creating directory '%s'" ciDir) files <- getDirectoryFiles instanceDir traceL (printf "copying files: %s" (show files))- liftIO (mapM_- (\(f,t) -> do- ensureDir t- copyFile f t)- (((instanceDir </>) &&& (ciDir </>)) <$> files))+ liftIO+ (mapM_+ (\(f, t) -> do+ ensureDir t+ copyFile f t)+ (((instanceDir </>) &&& (ciDir </>)) <$> files)) infoL (printf "CREATED CI_DIR: '%s'" (takeFileName ciDir)) return (CloudInitTarget CI_DIR ciDir) @@ -346,13 +363,15 @@ ensureDir tmpFile dbgL (printf "creating cloud init iso temp image '%s',\ \ destination file: '%s" tmpFile isoFile)- cmd (printf "genisoimage\+ cmd+ (printf+ "genisoimage\ \ -output '%s'\ \ -volid cidata\ \ -rock\ \ -d '%s' 2>&1"- tmpFile- instanceDir)+ tmpFile+ instanceDir) dbgL (printf "moving iso image '%s' to '%s'" tmpFile isoFile) ensureDir isoFile liftIO (copyFile tmpFile isoFile)@@ -369,9 +388,10 @@ traceL (printf "adding '%s'" (show files)) cmd (printf "truncate --size 2M '%s'" tmpFile) cmd (printf "mkfs.vfat -n cidata '%s' 2>&1" tmpFile)- cmd (intercalate " " ((printf "mcopy -oi '%s' " tmpFile)- : (printf "'%s'" <$> files))- ++ " ::")+ cmd+ (intercalate " " ((printf "mcopy -oi '%s' " tmpFile)+ : (printf "'%s'" <$> files))+ ++ " ::") dbgL (printf "moving vfat image '%s' to '%s'" tmpFile vfatFile) ensureDir vfatFile liftIO (copyFile tmpFile vfatFile)
src/lib/B9/B9Monad.hs view
@@ -27,7 +27,7 @@ import System.Directory import System.Exit import System.FilePath-import System.Locale ( defaultTimeLocale )+-- import qualified System.Locale ( defaultTimeLocale ) import System.Random ( randomIO ) import Text.Printf import Control.Concurrent.Async (Concurrently (..))
src/lib/B9/ConfigUtils.hs view
@@ -47,7 +47,7 @@ | InHomeDir FilePath | InB9UserDir FilePath | InTempDir FilePath- deriving (Eq, Read, Show, Typeable, Data)+ deriving (Eq, Read, Show, Typeable, Data) resolve :: MonadIO m => SystemPath -> m FilePath resolve (Path p) = return p@@ -84,17 +84,18 @@ consult f = liftIO $ do c <- readFile f case readEither c of- Left e ->- throwIO $ ReaderException f e- Right a ->- return a+ Left e ->+ throwIO $ ReaderException f e+ Right a ->+ return a maybeConsult :: (MonadIO m, Read a) => Maybe FilePath -> a -> m a maybeConsult Nothing defaultArg = return defaultArg maybeConsult (Just f) defaultArg = liftIO $ do exists <- doesFileExist f if exists- then do consult f+ then do+ consult f else return defaultArg maybeConsultSystemPath :: (MonadIO m, Read a) => Maybe SystemPath -> a -> m a@@ -103,7 +104,8 @@ f' <- resolve f exists <- doesFileExist f' if exists- then do consult f'+ then do+ consult f' else return defaultArg data IniFileException = IniFileException FilePath CPError@@ -115,8 +117,8 @@ cfgFile <- resolve cfgFile' cp' <- liftIO $ readfile emptyCP cfgFile case cp' of- Left e -> liftIO $ throwIO (IniFileException cfgFile e)- Right cp -> return cp+ Left e -> liftIO $ throwIO (IniFileException cfgFile e)+ Right cp -> return cp getOption :: (Get_C a, Monoid a) => ConfigParser -> SectionSpec -> OptionSpec -> a getOption cp sec key = either (const mempty) id $ get cp sec key@@ -139,10 +141,10 @@ randomUUID :: MonadIO m => m UUID-randomUUID = liftIO (UUID <$> ((,,,,,)- <$> randomIO- <*> randomIO- <*> randomIO- <*> randomIO- <*> randomIO- <*> randomIO))+randomUUID = liftIO+ (UUID <$> ((,,,,,) <$> randomIO+ <*> randomIO+ <*> randomIO+ <*> randomIO+ <*> randomIO+ <*> randomIO))
src/lib/B9/Content/ErlTerms.hs view
@@ -106,25 +106,27 @@ ,sized aErlTuple ] where+ decrSize 0 = resize 0+ decrSize n = resize (n - 1) aErlString n =- ErlString <$> resize (n-1) (listOf (choose (toEnum 0,toEnum 255)))+ ErlString <$> decrSize n (listOf (choose (toEnum 0,toEnum 255))) aErlFloat n = do- f <- resize (n-1) arbitrary :: Gen Float+ f <- decrSize n arbitrary :: Gen Float let d = fromRational (toRational f) return (ErlFloat d) aErlNatural n =- ErlNatural <$> resize (n-1) arbitrary+ ErlNatural <$> decrSize n arbitrary aErlChar n =- ErlChar <$> resize (n-1) (choose (toEnum 0, toEnum 255))+ ErlChar <$> decrSize n (choose (toEnum 0, toEnum 255)) aErlAtomUnquoted n = do f <- choose ('a','z')- rest <- resize (n-1) aErlNameString+ rest <- decrSize n aErlNameString return (ErlAtom (f:rest)) aErlAtomQuoted n = do- cs <- resize (n-1) aParsableErlString+ cs <- decrSize n aParsableErlString return (ErlAtom ("'" ++ cs ++ "'")) aErlBinary n =- ErlBinary <$> resize (n-1) (listOf (choose (toEnum 0,toEnum 255)))+ ErlBinary <$> decrSize n (listOf (choose (toEnum 0,toEnum 255))) aParsableErlString = oneof [aErlNameString ,aErlEscapedCharString ,aErlControlCharString
src/lib/B9/LibVirtLXC.hs view
@@ -49,8 +49,8 @@ execute (Context scriptDirHost uuid domainFile cfg) = do let virsh = virshCommand cfg- cmd $ printf "%s create '%s'" virsh domainFile- cmd $ printf "%s console %U" virsh uuid+ cmd $ printf "%s create '%s' --console --autodestroy" virsh domainFile+ -- cmd $ printf "%s console %U" virsh uuid checkSuccessMarker scriptDirHost checkSuccessMarker scriptDirHost =