git.iko.soy/typeable/cabal2nix
on master help sign in
Merge pull request #230 from dajmaki/feat-impl-flag
8729064Peter Simons
cabal2nix/src/Main.hs+9−3
@@ -15,7 +15,7 @@ import Distribution.Nixpkgs.Meta
15import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
15import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
16import Distribution.Simple.Utils ( lowercase )
16import Distribution.Simple.Utils ( lowercase )
17import Distribution.System
17import Distribution.System
18−import Distribution.Text ( display )
18+import Distribution.Text ( display, simpleParse )
19import Language.Nix
19import Language.Nix
20import Options.Applicative
20import Options.Applicative
21import Paths_cabal2nix
21import Paths_cabal2nix
@@ -41,6 +41,7 @@ data Options = Options
41 , optHackageDb :: Maybe FilePath
41 , optHackageDb :: Maybe FilePath
42 , optNixShellOutput :: Bool
42 , optNixShellOutput :: Bool
43 , optFlags :: [String]
43 , optFlags :: [String]
44+ , optCompilerId :: Maybe String
44 , optUrl :: String
45 , optUrl :: String
45 }
46 }
46 deriving (Show)
47 deriving (Show)
@@ -62,6 +63,7 @@ options = Options
62 <*> optional (strOption $ long "hackage-db" <> metavar "PATH" <> help "path to the local hackage db in tar format")
63 <*> optional (strOption $ long "hackage-db" <> metavar "PATH" <> help "path to the local hackage db in tar format")
63 <*> switch (long "shell" <> help "generate output suitable for nix-shell")
64 <*> switch (long "shell" <> help "generate output suitable for nix-shell")
64 <*> many (strOption $ short 'f' <> long "flag" <> help "Cabal flag (may be specified multiple times)")
65 <*> many (strOption $ short 'f' <> long "flag" <> help "Cabal flag (may be specified multiple times)")
66+ <*> optional (strOption $ long "compiler-id" <> help "Compiler identifier to use when evaluating cabal file")
65 <*> strArgument (metavar "URI")
67 <*> strArgument (metavar "URI")
66
68
67pinfo :: ParserInfo Options
69pinfo :: ParserInfo Options
@@ -97,11 +99,15 @@ main = bracket (return ()) (\() -> hFlush stdout >> hFlush stderr) $ \() -> do
97
99
98 pkg <- getPackage optHackageDb $ Source optUrl (fromMaybe "" optRevision) (maybe UnknownHash Guess optSha256)
100 pkg <- getPackage optHackageDb $ Source optUrl (fromMaybe "" optRevision) (maybe UnknownHash Guess optSha256)
99
101
102+ let
103+ compilerId :: CompilerId
104+ compilerId = fromMaybe buildCompilerId (optCompilerId >>= simpleParse)
105+
100− let deriv :: Derivation
106+ deriv :: Derivation
101 deriv = fromGenericPackageDescription (const True)
107 deriv = fromGenericPackageDescription (const True)
102 (\i -> Just (binding # (i, path # [i])))
108 (\i -> Just (binding # (i, path # [i])))
103 buildPlatform
109 buildPlatform
104− (unknownCompilerInfo buildCompilerId NoAbiTag)
110+ (unknownCompilerInfo compilerId NoAbiTag)
105 (readFlagList optFlags)
111 (readFlagList optFlags)
106 []
112 []
107 (pkgCabal pkg)
113 (pkgCabal pkg)