Distribution.System

Cabal-1.23.1.0: A framework for packaging Haskell software

Copyright | Duncan Coutts 2007-2008
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Distribution.System

Contents

- Operating System
- Machine Architecture
- Platform is a pair of arch and OS
- Internal

Description

Cabal often needs to do slightly different things on specific platforms. You probably know about the `os` however using that is very inconvenient because it is a string and different Haskell implementations do not agree on using the same strings for the same platforms! (In particular see the controversy over "windows" vs "ming32"). So to make it more consistent and easy to use we have an `OS` enumeration.

Synopsis

- data OS
  - = Linux
  - | Windows
  - | OSX
  - | FreeBSD
  - | OpenBSD
  - | NetBSD
  - | DragonFly
  - | Solaris
  - | AIX
  - | HPUX
  - | IRIX
  - | HaLVM
  - | Hurd
  - | IOS
  - | Android
  - | Ghcjs
  - | OtherOS String
- buildOS :: OS
- data Arch
  - = I386
  - | X86_64
  - | PPC
  - | PPC64
  - | Sparc
  - | Arm
  - | Mips
  - | SH
  - | IA64
  - | S390
  - | Alpha
  - | Hppa
  - | Rs6000
  - | M68k
  - | Vax
  - | JavaScript
  - | OtherArch String
- buildArch :: Arch
- data Platform = Platform Arch OS
- buildPlatform :: Platform
- platformFromTriple :: String -> Maybe Platform
- knownOSs :: [OS]
- knownArches :: [Arch]

# Operating System

data OS Source

Constructors

Linux |
Windows |
OSX |
FreeBSD |
OpenBSD |
NetBSD |
DragonFly |
Solaris |
AIX |
HPUX |
IRIX |
HaLVM |
Hurd |
IOS |
Android |
Ghcjs |
OtherOS String |

Instances

Eq OS |
Methods (==) :: OS -> OS -> Bool (/=) :: OS -> OS -> Bool
Data OS |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OS -> c OS Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OS Source toConstr :: OS -> Constr Source dataTypeOf :: OS -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c OS) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OS) Source gmapT :: (forall b. Data b => b -> b) -> OS -> OS Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OS -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OS -> r Source gmapQ :: (forall d. Data d => d -> u) -> OS -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> OS -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> OS -> m OS Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OS -> m OS Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OS -> m OS Source
Ord OS |
Methods compare :: OS -> OS -> Ordering (<) :: OS -> OS -> Bool (<=) :: OS -> OS -> Bool (>) :: OS -> OS -> Bool (>=) :: OS -> OS -> Bool max :: OS -> OS -> OS min :: OS -> OS -> OS
Read OS |
Methods readsPrec :: Int -> ReadS OS Source readList :: ReadS [OS] Source readPrec :: ReadPrec OS Source readListPrec :: ReadPrec [OS] Source
Show OS |
Methods showsPrec :: Int -> OS -> ShowS Source show :: OS -> String Source showList :: [OS] -> ShowS Source
Generic OS |
Associated Types type Rep OS :: * -> * Source Methods from :: OS -> Rep OS x Source to :: Rep OS x -> OS Source
Binary OS |
Methods put :: OS -> Put Source get :: Get OS Source
Text OS |
Methods disp :: OS -> Doc Source parse :: ReadP r OS Source
type Rep OS = D1 (MetaData "OS" "Distribution.System" "Cabal-1.23.1.0" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Linux" PrefixI False) U1) (C1 (MetaCons "Windows" PrefixI False) U1)) ((:+:) (C1 (MetaCons "OSX" PrefixI False) U1) (C1 (MetaCons "FreeBSD" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "OpenBSD" PrefixI False) U1) (C1 (MetaCons "NetBSD" PrefixI False) U1)) ((:+:) (C1 (MetaCons "DragonFly" PrefixI False) U1) (C1 (MetaCons "Solaris" PrefixI False) U1)))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "AIX" PrefixI False) U1) (C1 (MetaCons "HPUX" PrefixI False) U1)) ((:+:) (C1 (MetaCons "IRIX" PrefixI False) U1) (C1 (MetaCons "HaLVM" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Hurd" PrefixI False) U1) (C1 (MetaCons "IOS" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Android" PrefixI False) U1) ((:+:) (C1 (MetaCons "Ghcjs" PrefixI False) U1) (C1 (MetaCons "OtherOS" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))))) |

buildOS :: OS Source

# Machine Architecture

data Arch Source

Constructors

I386 |
X86_64 |
PPC |
PPC64 |
Sparc |
Arm |
Mips |
SH |
IA64 |
S390 |
Alpha |
Hppa |
Rs6000 |
M68k |
Vax |
JavaScript |
OtherArch String |

Instances

Eq Arch |
Methods (==) :: Arch -> Arch -> Bool (/=) :: Arch -> Arch -> Bool
Data Arch |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arch -> c Arch Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Arch Source toConstr :: Arch -> Constr Source dataTypeOf :: Arch -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Arch) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arch) Source gmapT :: (forall b. Data b => b -> b) -> Arch -> Arch Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arch -> r Source gmapQ :: (forall d. Data d => d -> u) -> Arch -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Arch -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Arch -> m Arch Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Arch -> m Arch Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Arch -> m Arch Source
Ord Arch |
Methods compare :: Arch -> Arch -> Ordering (<) :: Arch -> Arch -> Bool (<=) :: Arch -> Arch -> Bool (>) :: Arch -> Arch -> Bool (>=) :: Arch -> Arch -> Bool max :: Arch -> Arch -> Arch min :: Arch -> Arch -> Arch
Read Arch |
Methods readsPrec :: Int -> ReadS Arch Source readList :: ReadS [Arch] Source readPrec :: ReadPrec Arch Source readListPrec :: ReadPrec [Arch] Source
Show Arch |
Methods showsPrec :: Int -> Arch -> ShowS Source show :: Arch -> String Source showList :: [Arch] -> ShowS Source
Generic Arch |
Associated Types type Rep Arch :: * -> * Source Methods from :: Arch -> Rep Arch x Source to :: Rep Arch x -> Arch Source
Binary Arch |
Methods put :: Arch -> Put Source get :: Get Arch Source
Text Arch |
Methods disp :: Arch -> Doc Source parse :: ReadP r Arch Source
type Rep Arch = D1 (MetaData "Arch" "Distribution.System" "Cabal-1.23.1.0" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "I386" PrefixI False) U1) (C1 (MetaCons "X86_64" PrefixI False) U1)) ((:+:) (C1 (MetaCons "PPC" PrefixI False) U1) (C1 (MetaCons "PPC64" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Sparc" PrefixI False) U1) (C1 (MetaCons "Arm" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Mips" PrefixI False) U1) (C1 (MetaCons "SH" PrefixI False) U1)))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "IA64" PrefixI False) U1) (C1 (MetaCons "S390" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Alpha" PrefixI False) U1) (C1 (MetaCons "Hppa" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Rs6000" PrefixI False) U1) (C1 (MetaCons "M68k" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Vax" PrefixI False) U1) ((:+:) (C1 (MetaCons "JavaScript" PrefixI False) U1) (C1 (MetaCons "OtherArch" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))))) |

buildArch :: Arch Source

# Platform is a pair of arch and OS

data Platform Source

Constructors

Platform Arch OS |

Instances

Eq Platform |
Methods (==) :: Platform -> Platform -> Bool (/=) :: Platform -> Platform -> Bool
Data Platform |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Platform -> c Platform Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Platform Source toConstr :: Platform -> Constr Source dataTypeOf :: Platform -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Platform) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Platform) Source gmapT :: (forall b. Data b => b -> b) -> Platform -> Platform Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Platform -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Platform -> r Source gmapQ :: (forall d. Data d => d -> u) -> Platform -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Platform -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Platform -> m Platform Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Platform -> m Platform Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Platform -> m Platform Source
Ord Platform |
Methods compare :: Platform -> Platform -> Ordering (<) :: Platform -> Platform -> Bool (<=) :: Platform -> Platform -> Bool (>) :: Platform -> Platform -> Bool (>=) :: Platform -> Platform -> Bool max :: Platform -> Platform -> Platform min :: Platform -> Platform -> Platform
Read Platform |
Methods readsPrec :: Int -> ReadS Platform Source readList :: ReadS [Platform] Source readPrec :: ReadPrec Platform Source readListPrec :: ReadPrec [Platform] Source
Show Platform |
Methods showsPrec :: Int -> Platform -> ShowS Source show :: Platform -> String Source showList :: [Platform] -> ShowS Source
Generic Platform |
Associated Types type Rep Platform :: * -> * Source Methods from :: Platform -> Rep Platform x Source to :: Rep Platform x -> Platform Source
Binary Platform |
Methods put :: Platform -> Put Source get :: Get Platform Source
Text Platform |
Methods disp :: Platform -> Doc Source parse :: ReadP r Platform Source
type Rep Platform = D1 (MetaData "Platform" "Distribution.System" "Cabal-1.23.1.0" False) (C1 (MetaCons "Platform" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Arch)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 OS)))) |

buildPlatform :: Platform Source

The platform Cabal was compiled on. In most cases, `LocalBuildInfo.hostPlatform` should be used instead (the platform we're targeting).

platformFromTriple :: String -> Maybe Platform Source

# Internal

knownOSs :: [OS] Source

knownArches :: [Arch] Source