@@ -3,6 +3,8 @@
33
44module Main ( main ) where
55
6+import HackageGit
7+
68import Control.Lens
79import Control.Monad
810import Control.Monad.Par.Combinator
@@ -29,11 +31,9 @@ import Distribution.PackageDescription hiding ( options, buildDepends, extraLibs
2931import Distribution.System
3032import Distribution.Text
3133import Distribution.Version
32−import HackageGit
3334import Language.Nix
3435import Options.Applicative
3536import qualified Paths_cabal2nix as Main
36−import Stackage
3737import System.FilePath
3838import System.IO
3939import Text.PrettyPrint.HughesPJClass hiding ( (<>) )
@@ -45,7 +45,6 @@ data CLI = CLI
4545 { hackageRepository :: FilePath
4646 , preferredVersionsFile :: Maybe FilePath
4747 , nixpkgsRepository :: FilePath
48− , ltsHaskellRepository :: FilePath
4948 , configFile :: FilePath
5049 , targetPlatform :: Platform
5150 }
@@ -58,7 +57,6 @@ main = do
5857 <$> strOption (long "hackage" <> help "path to Hackage git repository" <> value "hackage" <> showDefaultWith id <> metavar "PATH")
5958 <*> optional (strOption (long "preferred-versions" <> help "path to Hackage preferred-versions file" <> value "hackage/preferred-versions" <> showDefault <> metavar "PATH"))
6059 <*> strOption (long "nixpkgs" <> help "path to Nixpkgs repository" <> value "nixpkgs" <> showDefaultWith id <> metavar "PATH")
61− <*> strOption (long "lts-haskell" <> help "path to LTS Haskell repository" <> value "lts-haskell" <> showDefaultWith id <> metavar "PATH")
6260 <*> strOption (long "config" <> help "path to configuration file inside of Nixpkgs" <> value "pkgs/development/haskell-modules/configuration-hackage2nix.yaml" <> showDefaultWith id <> metavar "PATH")
6361 <*> option (fmap fromString str) (long "platform" <> help "target platform to generate package set for" <> value "x86_64-linux" <> showDefaultWith display <> metavar "PLATFORM")
6462
@@ -73,18 +71,14 @@ main = do
7371 )
7472 CLI {..} <- execParser pinfo
7573
76− config' <- readConfiguration (nixpkgsRepository </> configFile)
74+ config <- readConfiguration (nixpkgsRepository </> configFile)
7775 nixpkgs <- readNixpkgPackageMap nixpkgsRepository Nothing
7876 preferredVersions <- readPreferredVersions (fromMaybe (hackageRepository </> "preferred-versions") preferredVersionsFile)
7977 let fixup = Map.delete "acme-everything" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
8078 . Map.delete "som" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
8179 . Map.delete "type" -- TODO: https://github.com/NixOS/cabal2nix/issues/163
8280 hackage <- fixup <$> readHackage hackageRepository
83− lts <- readLTSHaskell ltsHaskellRepository
8481 let
85− config :: Configuration
86− config = config' { defaultPackageOverrides = [ Dependency n (thisVersion (Stackage.version spec)) | (n, spec) <- Map.toList (packages lts) ] }
87−
8882 hackagePackagesFile :: FilePath
8983 hackagePackagesFile = nixpkgsRepository </> "pkgs/development/haskell-modules/hackage-packages.nix"
9084
@@ -110,15 +104,11 @@ main = do
110104 extraPackageSet = Map.unionsWith Set.union
111105 [ Map.singleton name (Set.singleton (resolveConstraint c hackage)) | c@(Dependency name _) <- extraPackages config ]
112106
113− stackagePackageSet :: Map PackageName (Map Version Spec)
114− stackagePackageSet = Map.fromListWith (Map.unionWith mergeSpecs) [ (n, Map.singleton (Stackage.version spec) spec) | snapshot <- [lts], (n, spec) <- Map.toList (packages snapshot) ]
115−
116107 db :: PackageMultiSet
117108 db = Map.unionsWith Set.union [ Map.map Set.singleton generatedDefaultPackageSet
118109 , Map.map Set.singleton latestCorePackageSet
119110 , Map.map Set.singleton latestOverridePackageSet
120111 , extraPackageSet
121− , Map.map Map.keysSet stackagePackageSet
122112 ]
123113
124114 haskellResolver :: Dependency -> Bool
@@ -148,9 +138,6 @@ main = do
148138 tarballSHA256 = fromMaybe (error (display pkgId ++ ": meta data has no hash for the tarball"))
149139 (view (hashes . at "SHA256") meta)
150140
151− spec :: Spec
152− spec = Spec v True True `fromMaybe` (Map.lookup name stackagePackageSet >>= Map.lookup v)
153−
154141 flagAssignment :: FlagAssignment -- We don't use the flags from Stackage Nightly here, because
155142 flagAssignment = configureCabalFlags pkgId -- they are chosen specifically for GHC 7.10.2.
156143
@@ -161,8 +148,6 @@ main = do
161148 drv = fromGenericPackageDescription haskellResolver nixpkgsResolver targetPlatform (compilerInfo config) flagAssignment [] descr
162149 & src .~ DerivationSource "url" ("mirror://hackage/" ++ display pkgId ++ ".tar.gz") "" tarballSHA256
163150 & editedCabalFile .~ cabalSHA256
164− & Derivation.runHaddock &&~ Stackage.runHaddock spec
165− & doCheck &&~ runTests spec
166151 & metaSection.hydraPlatforms %~ (`Set.difference` Map.findWithDefault Set.empty name (dontDistributePackages config))
167152 & metaSection.maintainers .~ Map.findWithDefault Set.empty name globalPackageMaintainers
168153 & metaSection.hydraPlatforms %~ (if isInDefaultPackageSet then id else const Set.empty)