@@ -42,14 +42,22 @@ data Configuration = Configuration
4242 -- role during dependency resolution.
4343 , extraPackages :: [Constraint]
4444
45− -- |We know that these packages won't build, so we give them an empty
46− -- meta.hydraPlatforms attribute to avoid cluttering our Hydra output with
47− -- lots of failure messages.
48− , dontDistributePackages :: Map PackageName (Set Platform)
49−
5045 -- |This information is used by the @hackage2nix@ utility to determine the
5146 -- 'maintainers' for a given Haskell package.
5247 , packageMaintainers :: Map Identifier (Set PackageName)
48+
49+ -- |These packages (by design) don't support certain platforms.
50+ , unsupportedPlatforms :: Map PackageName (Set Platform)
51+
52+ -- |These packages cannot be distributed by Hydra, i.e. because they have an
53+ -- unfree license or depend on other tools that cannot be distributed for
54+ -- some reason.
55+ , dontDistributePackages :: Set PackageName
56+
57+ -- |We know that these packages won't compile, so we mark them as broken and
58+ -- also disable their meta.hydraPlatforms attribute to avoid cluttering our
59+ -- Hydra job with lots of failure messages.
60+ , brokenPackages :: Set PackageName
5361 }
5462 deriving (Show, Generic)
5563
@@ -61,8 +69,10 @@ instance FromJSON Configuration where
6169 <*> o .:? "core-packages" .!= mempty
6270 <*> o .:? "default-package-overrides" .!= mempty
6371 <*> o .:? "extra-packages" .!= mempty
64− <*> o .:? "dont-distribute-packages" .!= mempty
6572 <*> o .:? "package-maintainers" .!= mempty
73+ <*> o .:? "unsupported-platforms" .!= mempty
74+ <*> o .:? "dont-distribute-packages" .!= mempty
75+ <*> o .:? "broken-packages" .!= mempty
6676 parseJSON _ = error "invalid Configuration"
6777
6878instance FromJSON Identifier where
@@ -87,7 +97,7 @@ assertConsistency cfg@Configuration {..} = do
8797 let report msg = fail ("*** configuration error: " ++ msg)
8898
8999 maintainedPackages = Set.unions (Map.elems packageMaintainers)
90− disabledPackages = Map.keysSet dontDistributePackages
100+ disabledPackages = dontDistributePackages `Set.union` brokenPackages
91101 disabledMaintainedPackages = maintainedPackages `Set.intersection` disabledPackages
92102 unless (Set.null disabledMaintainedPackages) $
93103 report ("disabled packages that have a maintainer: " ++ show disabledMaintainedPackages)