mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-01-12 07:18:31 +01:00
43 lines
1.6 KiB
Haskell
43 lines
1.6 KiB
Haskell
{-# LANGUAGE NoImplicitPrelude #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
-- | Take an existing build plan and bump all packages to the newest version in
|
|
-- the same major version number.
|
|
module Stackage2.UpdateBuildPlan
|
|
( updatePackageConstraints
|
|
, updateBuildPlan
|
|
) where
|
|
|
|
import Stackage2.Prelude
|
|
import Stackage2.BuildPlan
|
|
import Stackage2.PackageConstraints
|
|
import Stackage2.PackageDescription
|
|
import Distribution.Version (orLaterVersion, earlierVersion)
|
|
|
|
updateBuildPlan :: BuildPlan a -> IO (BuildPlan FlatComponent)
|
|
updateBuildPlan = newBuildPlan . updatePackageConstraints
|
|
|
|
updatePackageConstraints :: BuildPlan a -> PackageConstraints
|
|
updatePackageConstraints BuildPlan {..} = PackageConstraints
|
|
{ pcPackages = flip map bpExtra $ \pb ->
|
|
( intersectVersionRanges (bumpRange (pbVersion pb)) (pbVersionRange pb)
|
|
, pbMaintainer pb
|
|
)
|
|
, pcCorePackages = bpCore
|
|
, pcCoreExecutables = bpCoreExecutables
|
|
, pcGhcVersion = bpGhcVersion
|
|
, pcOS = bpOS
|
|
, pcArch = bpArch
|
|
, pcTests = maybe ExpectSuccess pbTestState . flip lookup bpExtra
|
|
, pcHaddocks = maybe ExpectSuccess pbHaddockState . flip lookup bpExtra
|
|
, pcBuildBenchmark = maybe True pbTryBuildBenchmark . flip lookup bpExtra
|
|
, pcFlagOverrides = maybe mempty pbFlags . flip lookup bpExtra
|
|
}
|
|
where
|
|
bumpRange version = intersectVersionRanges
|
|
(orLaterVersion version)
|
|
(earlierVersion $ bumpVersion version)
|
|
bumpVersion (Version (x:y:_) _) = Version [x, y + 1] []
|
|
bumpVersion (Version [x] _) = Version [x, 1] []
|
|
bumpVersion (Version [] _) = assert False $ Version [1, 0] []
|