diff --git a/Stackage/Config.hs b/Stackage/Config.hs index fbd0854b..9c5bd77c 100644 --- a/Stackage/Config.hs +++ b/Stackage/Config.hs @@ -140,10 +140,8 @@ defaultStablePackages = unPackageMap $ execWriter $ do mapM_ (add "Felipe Lessa ") $ words "esqueleto fb fb-persistent yesod-fb yesod-auth-fb" - -- Requires containers 0.5 - -- https://github.com/fpco/stackage/issues/58 - -- mapM_ (add "Alexander Altman ") $ words - -- "base-unicode-symbols containers-unicode-symbols" + mapM_ (add "Alexander Altman ") $ words + "base-unicode-symbols containers-unicode-symbols" -- https://github.com/fpco/stackage/issues/46 addRange "Michael Snoyman" "QuickCheck" "< 2.6" diff --git a/Stackage/InstallInfo.hs b/Stackage/InstallInfo.hs index 4b0f0f6a..11776fb4 100644 --- a/Stackage/InstallInfo.hs +++ b/Stackage/InstallInfo.hs @@ -46,7 +46,7 @@ getInstallInfo settings = do let totalCore = extraCore settings `Set.union` Set.map (\(PackageIdentifier p _) -> p) core putStrLn "Loading package database" - pdb <- loadPackageDB settings totalCore allPackages + pdb <- loadPackageDB settings coreMap totalCore allPackages putStrLn "Narrowing package database" final <- narrowPackageDB settings totalCore pdb $ Set.fromList $ Map.toList $ Map.map snd $ allPackages diff --git a/Stackage/LoadDatabase.hs b/Stackage/LoadDatabase.hs index a91b55b1..09b3eac9 100644 --- a/Stackage/LoadDatabase.hs +++ b/Stackage/LoadDatabase.hs @@ -54,10 +54,11 @@ import Stackage.Util -- -- * For other packages, select the maximum version number. loadPackageDB :: SelectSettings - -> Set PackageName -- ^ core packages + -> Map PackageName Version -- ^ core packages from HP file + -> Set PackageName -- ^ all core packages, including extras -> Map PackageName (VersionRange, Maintainer) -- ^ additional deps -> IO PackageDB -loadPackageDB settings core deps = do +loadPackageDB settings coreMap core deps = do tarName <- getTarballName lbs <- L.readFile tarName addEntries mempty $ Tar.read lbs @@ -139,7 +140,7 @@ loadPackageDB settings core deps = do checkCond' (CAnd c1 c2) = checkCond' c1 && checkCond' c2 flags' = map flagName (filter flagDefault $ genPackageFlags gpd) ++ - (map FlagName $ Set.toList $ Stackage.Types.flags settings) + (map FlagName $ Set.toList $ Stackage.Types.flags settings coreMap) -- | Attempt to grab the Github username from a homepage. parseGithubUserHP :: String -> Maybe String diff --git a/Stackage/Select.hs b/Stackage/Select.hs index ddad8496..a258eda1 100644 --- a/Stackage/Select.hs +++ b/Stackage/Select.hs @@ -8,6 +8,8 @@ import qualified Data.Map as Map import Data.Maybe (mapMaybe) import Data.Set (empty) import qualified Data.Set as Set +import Distribution.Text (simpleParse) +import Distribution.Version (withinRange) import Prelude hiding (pi) import Stackage.Config import Stackage.InstallInfo @@ -22,7 +24,13 @@ defaultSelectSettings = SelectSettings , haskellPlatformCabal = "haskell-platform/haskell-platform.cabal" , requireHaskellPlatform = True , excludedPackages = empty - , flags = Set.fromList $ words "blaze_html_0_5" + , flags = \coreMap -> + Set.fromList (words "blaze_html_0_5") `Set.union` + -- Support for containers-unicode-symbols + (case Map.lookup (PackageName "containers") coreMap of + Just v | Just range <- simpleParse "< 0.5", v `withinRange` range + -> Set.singleton "containers-old" + _ -> Set.empty) , disabledFlags = Set.fromList $ words "bytestring-in-base" , allowedPackage = const $ Right () , useGlobalDatabase = False diff --git a/Stackage/Types.hs b/Stackage/Types.hs index 8ef0f949..2f859295 100644 --- a/Stackage/Types.hs +++ b/Stackage/Types.hs @@ -91,8 +91,9 @@ newtype Maintainer = Maintainer { unMaintainer :: String } data SelectSettings = SelectSettings { haskellPlatformCabal :: FilePath - , flags :: Set String - -- ^ Compile flags which should be turned on. + , flags :: Map PackageName Version -> Set String + -- ^ Compile flags which should be turned on. Takes a Map providing the + -- core packages so that flags can be set appropriately. , disabledFlags :: Set String -- ^ Compile flags which should always be disabled. , extraCore :: Set PackageName