@@ -8,6 +8,7 @@ import Control.Monad (forM_, unless)
8import Data.List (foldl')
8import Data.List (foldl')
9import qualified Data.Map as Map
9import qualified Data.Map as Map
10import qualified Data.Set as Set
10import qualified Data.Set as Set
11+import Data.Time (getCurrentTime, formatTime)
11import Data.Version (showVersion)
12import Data.Version (showVersion)
12import qualified Distribution.Text
13import qualified Distribution.Text
13import Distribution.Version (simplifyVersionRange, withinRange)
14import Distribution.Version (simplifyVersionRange, withinRange)
@@ -15,9 +16,12 @@ import Stackage.GhcPkg
15import Stackage.HaskellPlatform
16import Stackage.HaskellPlatform
16import Stackage.LoadDatabase
17import Stackage.LoadDatabase
17import Stackage.NarrowDatabase
18import Stackage.NarrowDatabase
19+import Stackage.ServerFiles
18import Stackage.Types
20import Stackage.Types
19import Stackage.Util
21import Stackage.Util
22+import qualified System.IO as IO
20import qualified System.IO.UTF8
23import qualified System.IO.UTF8
24+import System.Locale (defaultTimeLocale)
21import System.Exit (exitFailure)
25import System.Exit (exitFailure)
23dropExcluded :: SelectSettings
27dropExcluded :: SelectSettings
@@ -87,15 +91,32 @@ getInstallInfo settings = do
88 error "Conflicting build plan, exiting"
92 error "Conflicting build plan, exiting"
90− return InstallInfo
94+ let ii = InstallInfo
91− { iiCore = totalCore
95+ { iiCore = totalCore
92− , iiPackages = Map.map biToSPI final
96+ , iiPackages = Map.map biToSPI final
93− , iiOptionalCore = maybe
97+ , iiOptionalCore = maybe
94− Map.empty
98+ Map.empty
95− (Map.fromList . map (\(PackageIdentifier p v) -> (p, v)) . Set.toList . hplibs)
99+ (Map.fromList . map (\(PackageIdentifier p v) -> (p, v)) . Set.toList . hplibs)
97− , iiPackageDB = pdb
101+ , iiPackageDB = pdb
104+ putStrLn "Creating hackage file (for publishing to Stackage server)"
105+ IO.withBinaryFile "hackage" IO.WriteMode $ createHackageFile ii
107+ putStrLn "Creating desc file (for publishing to Stackage server)"
108+ now <- getCurrentTime
109+ System.IO.UTF8.writeFile "desc" $ concat
110+ [ "Stackage build for GHC "
111+ , let GhcMajorVersion x y = selectGhcVersion settings
112+ in show x ++ "." ++ show y
114+ , formatTime defaultTimeLocale "%Y-%m-%d\n" now
100biToSPI :: BuildInfo -> SelectedPackageInfo
121biToSPI :: BuildInfo -> SelectedPackageInfo
101biToSPI BuildInfo {..} = SelectedPackageInfo
122biToSPI BuildInfo {..} = SelectedPackageInfo