mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-02-19 01:35:50 +01:00
Cleanup
This commit is contained in:
parent
04f71e69e7
commit
17e23a8906
@ -1,7 +1,7 @@
|
|||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
{-# LANGUAGE TupleSections #-}
|
{-# LANGUAGE TupleSections #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
|
||||||
-- | The constraints on package selection for a new build plan.
|
-- | The constraints on package selection for a new build plan.
|
||||||
module Stackage2.BuildConstraints
|
module Stackage2.BuildConstraints
|
||||||
( BuildConstraints (..)
|
( BuildConstraints (..)
|
||||||
@ -11,16 +11,16 @@ module Stackage2.BuildConstraints
|
|||||||
, defaultBuildConstraints
|
, defaultBuildConstraints
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Stackage2.Prelude
|
|
||||||
import Stackage2.CorePackages
|
|
||||||
import qualified Stackage.Config as Old
|
|
||||||
import qualified Stackage.Types as Old
|
|
||||||
import qualified Stackage.Select as Old
|
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import Distribution.System (OS, Arch)
|
|
||||||
import Distribution.Version (anyVersion)
|
|
||||||
import qualified Distribution.System
|
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
|
import Distribution.System (Arch, OS)
|
||||||
|
import qualified Distribution.System
|
||||||
|
import Distribution.Version (anyVersion)
|
||||||
|
import qualified Stackage.Config as Old
|
||||||
|
import qualified Stackage.Select as Old
|
||||||
|
import qualified Stackage.Types as Old
|
||||||
|
import Stackage2.CorePackages
|
||||||
|
import Stackage2.Prelude
|
||||||
|
|
||||||
data TestState = ExpectSuccess
|
data TestState = ExpectSuccess
|
||||||
| ExpectFailure
|
| ExpectFailure
|
||||||
@ -128,8 +128,6 @@ defaultBuildConstraints = do
|
|||||||
defaultGlobalFlags = asMap $ mapFromList $
|
defaultGlobalFlags = asMap $ mapFromList $
|
||||||
map (, True) (map FlagName $ setToList $ Old.flags oldSettings mempty) ++
|
map (, True) (map FlagName $ setToList $ Old.flags oldSettings mempty) ++
|
||||||
map (, False) (map FlagName $ setToList $ Old.disabledFlags oldSettings)
|
map (, False) (map FlagName $ setToList $ Old.disabledFlags oldSettings)
|
||||||
tryBuildTest (PackageName name) = pack name `notMember` skippedTests
|
|
||||||
tryBuildBenchmark (PackageName name) = pack name `notMember` skippedBenchs
|
|
||||||
expectedFailures = Old.defaultExpectedFailures oldGhcVer False
|
expectedFailures = Old.defaultExpectedFailures oldGhcVer False
|
||||||
skippedTests =
|
skippedTests =
|
||||||
old ++ extraSkippedTests
|
old ++ extraSkippedTests
|
||||||
@ -145,7 +143,7 @@ defaultBuildConstraints = do
|
|||||||
pcVersionRange = simplifyVersionRange $ maybe anyVersion fst mold
|
pcVersionRange = simplifyVersionRange $ maybe anyVersion fst mold
|
||||||
pcMaintainer = (Maintainer . pack . Old.unMaintainer . snd) <$> mold
|
pcMaintainer = (Maintainer . pack . Old.unMaintainer . snd) <$> mold
|
||||||
pcTests
|
pcTests
|
||||||
| not $ tryBuildTest name = Don'tBuild
|
| unPackageName name `member` skippedTests = Don'tBuild
|
||||||
| name `member` expectedFailures = ExpectFailure
|
| name `member` expectedFailures = ExpectFailure
|
||||||
| otherwise = ExpectSuccess
|
| otherwise = ExpectSuccess
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
{-# LANGUAGE TupleSections #-}
|
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
|
||||||
{-# LANGUAGE DeriveFunctor #-}
|
|
||||||
{-# LANGUAGE DeriveFoldable #-}
|
{-# LANGUAGE DeriveFoldable #-}
|
||||||
|
{-# LANGUAGE DeriveFunctor #-}
|
||||||
{-# LANGUAGE DeriveTraversable #-}
|
{-# LANGUAGE DeriveTraversable #-}
|
||||||
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
|
{-# LANGUAGE TupleSections #-}
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
-- | Representation of a concrete build plan, and how to generate a new one
|
-- | Representation of a concrete build plan, and how to generate a new one
|
||||||
-- based on constraints.
|
-- based on constraints.
|
||||||
@ -15,20 +15,17 @@ module Stackage2.BuildPlan
|
|||||||
, newBuildPlan
|
, newBuildPlan
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Distribution.Package (Dependency (..))
|
|
||||||
import Distribution.PackageDescription
|
|
||||||
import Distribution.Version (withinRange, anyVersion, simplifyVersionRange)
|
|
||||||
import Stackage2.BuildConstraints
|
|
||||||
import Stackage2.PackageIndex
|
|
||||||
import Stackage2.Prelude
|
|
||||||
import Stackage2.GithubPings
|
|
||||||
import Control.Monad.State.Strict (execState, get, put)
|
import Control.Monad.State.Strict (execState, get, put)
|
||||||
|
import Data.Aeson
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import qualified Data.Set as Set
|
import qualified Data.Set as Set
|
||||||
import Data.Aeson
|
|
||||||
import Stackage2.PackageDescription
|
|
||||||
import qualified Distribution.System
|
|
||||||
import qualified Distribution.Compiler
|
import qualified Distribution.Compiler
|
||||||
|
import Distribution.PackageDescription
|
||||||
|
import Stackage2.BuildConstraints
|
||||||
|
import Stackage2.GithubPings
|
||||||
|
import Stackage2.PackageDescription
|
||||||
|
import Stackage2.PackageIndex
|
||||||
|
import Stackage2.Prelude
|
||||||
|
|
||||||
data BuildPlan = BuildPlan
|
data BuildPlan = BuildPlan
|
||||||
{ bpSystemInfo :: SystemInfo
|
{ bpSystemInfo :: SystemInfo
|
||||||
@ -80,15 +77,14 @@ instance ToJSON PackagePlan where
|
|||||||
]
|
]
|
||||||
instance FromJSON PackagePlan where
|
instance FromJSON PackagePlan where
|
||||||
parseJSON = withObject "PackageBuild" $ \o -> do
|
parseJSON = withObject "PackageBuild" $ \o -> do
|
||||||
ppVersion <- o .: "version" >>= efail . simpleParse . asText
|
ppVersion <- o .: "version"
|
||||||
|
>>= either (fail . show) return
|
||||||
|
. simpleParse . asText
|
||||||
ppGithubPings <- o .:? "github-pings" .!= mempty
|
ppGithubPings <- o .:? "github-pings" .!= mempty
|
||||||
ppUsers <- Set.map PackageName <$> (o .:? "users" .!= mempty)
|
ppUsers <- Set.map PackageName <$> (o .:? "users" .!= mempty)
|
||||||
ppConstraints <- o .: "constraints"
|
ppConstraints <- o .: "constraints"
|
||||||
ppDesc <- o .: "description"
|
ppDesc <- o .: "description"
|
||||||
return PackagePlan {..}
|
return PackagePlan {..}
|
||||||
where
|
|
||||||
pbDesc = ()
|
|
||||||
efail = either (fail . show) return
|
|
||||||
|
|
||||||
newBuildPlan :: MonadIO m => BuildConstraints -> m BuildPlan
|
newBuildPlan :: MonadIO m => BuildConstraints -> m BuildPlan
|
||||||
newBuildPlan bc@BuildConstraints {..} = liftIO $ do
|
newBuildPlan bc@BuildConstraints {..} = liftIO $ do
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
|
||||||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
|
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||||
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
-- | Confirm that a build plan has a consistent set of dependencies.
|
-- | Confirm that a build plan has a consistent set of dependencies.
|
||||||
@ -8,11 +8,11 @@ module Stackage2.CheckBuildPlan
|
|||||||
( checkBuildPlan
|
( checkBuildPlan
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Stackage2.Prelude
|
import Control.Monad.Writer.Strict (Writer, execWriter, tell)
|
||||||
import Stackage2.BuildPlan
|
|
||||||
import Stackage2.BuildConstraints
|
import Stackage2.BuildConstraints
|
||||||
|
import Stackage2.BuildPlan
|
||||||
import Stackage2.PackageDescription
|
import Stackage2.PackageDescription
|
||||||
import Control.Monad.Writer.Strict (execWriter, Writer, tell)
|
import Stackage2.Prelude
|
||||||
|
|
||||||
checkBuildPlan :: MonadThrow m => BuildPlan -> m ()
|
checkBuildPlan :: MonadThrow m => BuildPlan -> m ()
|
||||||
checkBuildPlan BuildPlan {..}
|
checkBuildPlan BuildPlan {..}
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
module Stackage2.GithubPings
|
module Stackage2.GithubPings
|
||||||
( getGithubPings
|
( getGithubPings
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Stackage2.Prelude
|
|
||||||
import Distribution.PackageDescription
|
import Distribution.PackageDescription
|
||||||
import qualified Stackage.Config as Old
|
import qualified Stackage.Config as Old
|
||||||
|
import Stackage2.Prelude
|
||||||
|
|
||||||
-- | Determine accounts to be pinged on Github based on various metadata in the
|
-- | Determine accounts to be pinged on Github based on various metadata in the
|
||||||
-- package description.
|
-- package description.
|
||||||
|
|||||||
@ -15,21 +15,15 @@ module Stackage2.PackageDescription
|
|||||||
, CheckCond (..)
|
, CheckCond (..)
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad.State.Strict (execState, get, put)
|
|
||||||
import Control.Monad.Writer.Strict (MonadWriter, execWriterT,
|
import Control.Monad.Writer.Strict (MonadWriter, execWriterT,
|
||||||
tell)
|
tell)
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import qualified Data.Set as Set
|
|
||||||
import Distribution.Compiler (CompilerFlavor)
|
import Distribution.Compiler (CompilerFlavor)
|
||||||
import Distribution.Package (Dependency (..))
|
import Distribution.Package (Dependency (..))
|
||||||
import Distribution.PackageDescription
|
import Distribution.PackageDescription
|
||||||
import Distribution.System (Arch, OS)
|
import Distribution.System (Arch, OS)
|
||||||
import Stackage2.CorePackages
|
|
||||||
import Stackage2.GithubPings
|
|
||||||
import Stackage2.PackageIndex
|
|
||||||
import Stackage2.Prelude
|
import Stackage2.Prelude
|
||||||
import Data.Aeson
|
|
||||||
|
|
||||||
-- | A simplified package description that tracks:
|
-- | A simplified package description that tracks:
|
||||||
--
|
--
|
||||||
|
|||||||
@ -12,11 +12,11 @@ module Stackage2.PackageIndex
|
|||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Codec.Archive.Tar as Tar
|
import qualified Codec.Archive.Tar as Tar
|
||||||
import qualified Codec.Archive.Tar.Entry as TarEntry
|
|
||||||
import Data.Conduit.Lazy (MonadActive,
|
import Data.Conduit.Lazy (MonadActive,
|
||||||
lazyConsume)
|
lazyConsume)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Distribution.PackageDescription (GenericPackageDescription, packageDescription, package)
|
import Distribution.PackageDescription (package,
|
||||||
|
packageDescription)
|
||||||
import Distribution.PackageDescription.Parse (ParseResult (..),
|
import Distribution.PackageDescription.Parse (ParseResult (..),
|
||||||
parsePackageDescription)
|
parsePackageDescription)
|
||||||
import Distribution.ParseUtils (PError)
|
import Distribution.ParseUtils (PError)
|
||||||
|
|||||||
@ -1,26 +1,26 @@
|
|||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
|
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
|
||||||
module Stackage2.Prelude
|
module Stackage2.Prelude
|
||||||
( module X
|
( module X
|
||||||
, module Stackage2.Prelude
|
, module Stackage2.Prelude
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import ClassyPrelude.Conduit as X
|
import ClassyPrelude.Conduit as X
|
||||||
|
import Data.Aeson (FromJSON, ToJSON)
|
||||||
import Data.Conduit.Process as X
|
import Data.Conduit.Process as X
|
||||||
|
import qualified Data.Map as Map
|
||||||
import Data.Typeable (TypeRep, typeOf)
|
import Data.Typeable (TypeRep, typeOf)
|
||||||
import Distribution.Package as X (PackageIdentifier (..),
|
import Distribution.Package as X (PackageIdentifier (..), PackageName (PackageName))
|
||||||
PackageName (PackageName))
|
|
||||||
import Distribution.PackageDescription as X (FlagName (..), GenericPackageDescription)
|
import Distribution.PackageDescription as X (FlagName (..), GenericPackageDescription)
|
||||||
import qualified Distribution.Text as DT
|
import qualified Distribution.Text as DT
|
||||||
import Distribution.Version as X (Version (..), VersionRange)
|
import Distribution.Version as X (Version (..),
|
||||||
import System.Exit (ExitCode (ExitSuccess))
|
VersionRange)
|
||||||
import Data.Aeson (ToJSON, FromJSON)
|
|
||||||
import qualified Distribution.Version as C
|
|
||||||
import Distribution.Version as X (withinRange)
|
import Distribution.Version as X (withinRange)
|
||||||
import qualified Data.Map as Map
|
import qualified Distribution.Version as C
|
||||||
|
import System.Exit (ExitCode (ExitSuccess))
|
||||||
|
|
||||||
unPackageName :: PackageName -> Text
|
unPackageName :: PackageName -> Text
|
||||||
unPackageName (PackageName str) = pack str
|
unPackageName (PackageName str) = pack str
|
||||||
@ -77,11 +77,19 @@ checkExitCode _ ExitSuccess = return ()
|
|||||||
checkExitCode cp ec = throwM $ ProcessExitedUnsuccessfully cp ec
|
checkExitCode cp ec = throwM $ ProcessExitedUnsuccessfully cp ec
|
||||||
|
|
||||||
-- FIXME move into streaming-commons?
|
-- FIXME move into streaming-commons?
|
||||||
|
withCheckedProcess :: ( InputSource stdin
|
||||||
|
, OutputSink stderr
|
||||||
|
, OutputSink stdout
|
||||||
|
, MonadIO m
|
||||||
|
)
|
||||||
|
=> CreateProcess
|
||||||
|
-> (stdin -> stdout -> stderr -> m b)
|
||||||
|
-> m b
|
||||||
withCheckedProcess cp f = do
|
withCheckedProcess cp f = do
|
||||||
(x, y, z, sph) <- streamingProcess cp
|
(x, y, z, sph) <- streamingProcess cp
|
||||||
res <- f x y z
|
res <- f x y z
|
||||||
ec <- waitForStreamingProcess sph
|
ec <- waitForStreamingProcess sph
|
||||||
checkExitCode cp ec
|
liftIO $ checkExitCode cp ec
|
||||||
return res
|
return res
|
||||||
|
|
||||||
newtype Maintainer = Maintainer { unMaintainer :: Text }
|
newtype Maintainer = Maintainer { unMaintainer :: Text }
|
||||||
|
|||||||
@ -8,12 +8,12 @@ module Stackage2.UpdateBuildPlan
|
|||||||
, updateBuildPlan
|
, updateBuildPlan
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Stackage2.Prelude
|
|
||||||
import Stackage2.BuildPlan
|
|
||||||
import Stackage2.BuildConstraints
|
|
||||||
import Stackage2.PackageDescription
|
|
||||||
import Distribution.Version (orLaterVersion, earlierVersion, anyVersion)
|
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
|
import Distribution.Version (anyVersion, earlierVersion,
|
||||||
|
orLaterVersion)
|
||||||
|
import Stackage2.BuildConstraints
|
||||||
|
import Stackage2.BuildPlan
|
||||||
|
import Stackage2.Prelude
|
||||||
|
|
||||||
updateBuildPlan :: BuildPlan -> IO BuildPlan
|
updateBuildPlan :: BuildPlan -> IO BuildPlan
|
||||||
updateBuildPlan = newBuildPlan . updateBuildConstraints
|
updateBuildPlan = newBuildPlan . updateBuildConstraints
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import Stackage2.BuildConstraints
|
|||||||
import Stackage2.UpdateBuildPlan
|
import Stackage2.UpdateBuildPlan
|
||||||
import Test.Hspec
|
import Test.Hspec
|
||||||
import qualified Data.Yaml as Y
|
import qualified Data.Yaml as Y
|
||||||
import Control.Exception (evaluate)
|
|
||||||
import Distribution.Version (anyVersion)
|
import Distribution.Version (anyVersion)
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ module Stackage2.PackageIndexSpec (spec) where
|
|||||||
import Stackage2.PackageIndex
|
import Stackage2.PackageIndex
|
||||||
import Stackage2.Prelude
|
import Stackage2.Prelude
|
||||||
import Test.Hspec
|
import Test.Hspec
|
||||||
import Distribution.Package (packageId, pkgVersion)
|
import Distribution.Package (packageId)
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = do
|
spec = do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user