Skip to content

Refactor D.PackageDescription #6855

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions Cabal/Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import Distribution.CabalSpecVersion (CabalSpecVersion)
import Distribution.Compiler (CompilerFlavor, CompilerId, PerCompilerFlavor)
import Distribution.InstalledPackageInfo (AbiDependency, ExposedModule, InstalledPackageInfo)
import Distribution.ModuleName (ModuleName)
import Distribution.Package (PackageIdentifier, PackageName)
import Distribution.PackageDescription
import Distribution.Simple.Compiler (DebugInfoLevel, OptimisationLevel, ProfDetailLevel)
import Distribution.Simple.Flag (Flag)
Expand All @@ -30,24 +29,15 @@ import Distribution.Simple.Setup (HaddockTarget, TestShowDetai
import Distribution.System
import Distribution.Types.AbiHash (AbiHash)
import Distribution.Types.ComponentId (ComponentId)
import Distribution.Types.CondTree
import Distribution.Types.Dependency (Dependency (..), mainLibSet)
import Distribution.Types.ExecutableScope
import Distribution.Types.ExeDependency
import Distribution.Types.ForeignLib
import Distribution.Types.ForeignLibOption
import Distribution.Types.ForeignLibType
import Distribution.Types.IncludeRenaming (IncludeRenaming)
import Distribution.Types.LegacyExeDependency
import Distribution.Types.LibraryVisibility (LibraryVisibility)
import Distribution.Types.Mixin
import Distribution.Types.ModuleReexport
import Distribution.Types.ModuleRenaming
import Distribution.Types.PackageVersionConstraint
import Distribution.Types.PkgconfigDependency (PkgconfigDependency)
import Distribution.Types.PkgconfigName (PkgconfigName)
import Distribution.Types.PkgconfigVersion (PkgconfigVersion)
import Distribution.Types.PkgconfigVersionRange (PkgconfigVersionRange)
import Distribution.Types.UnitId (DefUnitId, UnitId)
import Distribution.Types.UnqualComponentName
import Distribution.Utils.NubList (NubList)
import Distribution.Utils.ShortText (ShortText, fromShortText)
import Distribution.Verbosity
Expand Down
1 change: 0 additions & 1 deletion Cabal/Distribution/Backpack/ComponentsGraph.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import Distribution.PackageDescription
import Distribution.Simple.BuildToolDepends
import Distribution.Simple.LocalBuildInfo
import Distribution.Types.ComponentRequestedSpec
import Distribution.Types.UnqualComponentName
import Distribution.Compat.Graph (Graph, Node(..))
import qualified Distribution.Compat.Graph as Graph
import Distribution.Utils.Generic
Expand Down
1 change: 0 additions & 1 deletion Cabal/Distribution/Backpack/Id.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import Distribution.Simple.Setup as Setup
import qualified Distribution.Simple.InstallDirs as InstallDirs
import Distribution.Simple.LocalBuildInfo
import Distribution.Types.ComponentId
import Distribution.Types.PackageId
import Distribution.Types.UnitId
import Distribution.Types.MungedPackageName
import Distribution.Utils.Base62
Expand Down
1 change: 1 addition & 0 deletions Cabal/Distribution/Backpack/LinkedComponent.hs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import Distribution.Utils.MapAccum

import Distribution.Types.AnnotatedId
import Distribution.Types.ComponentName
import Distribution.Types.ModuleReexport
import Distribution.Types.ModuleRenaming
import Distribution.Types.IncludeRenaming
import Distribution.Types.ComponentInclude
Expand Down
2 changes: 1 addition & 1 deletion Cabal/Distribution/Backpack/UnifyM.hs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ import Distribution.Pretty
import Distribution.Types.IncludeRenaming
import Distribution.Types.ComponentInclude
import Distribution.Types.AnnotatedId
import Distribution.Types.ComponentName
import Distribution.Types.ModuleRenaming
import Distribution.Verbosity

import Data.STRef
Expand Down
190 changes: 73 additions & 117 deletions Cabal/Distribution/PackageDescription.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,135 +7,91 @@
-- Maintainer : [email protected]
-- Portability : portable
--
-- Backwards compatibility reexport of everything you need to know
-- Backwards compatibility reexport of most things you need to know
-- about @.cabal@ files.

module Distribution.PackageDescription (
-- * Package descriptions
PackageDescription(..),
emptyPackageDescription,
buildType,
license,
BuildType(..),
knownBuildTypes,
allLibraries,

-- ** Renaming (syntactic)
ModuleRenaming(..),
defaultRenaming,

-- ** Libraries
Library(..),
ModuleReexport(..),
emptyLibrary,
withLib,
hasPublicLib,
hasLibs,
explicitLibModules,
libModulesAutogen,

-- ** Executables
Executable(..),
emptyExecutable,
withExe,
hasExes,
exeModules,
exeModulesAutogen,

-- * Tests
TestSuite(..),
TestSuiteInterface(..),
TestType(..),
testType,
knownTestTypes,
emptyTestSuite,
hasTests,
withTest,
testModules,
testModulesAutogen,

-- * Benchmarks
Benchmark(..),
BenchmarkInterface(..),
BenchmarkType(..),
benchmarkType,
knownBenchmarkTypes,
emptyBenchmark,
hasBenchmarks,
withBenchmark,
benchmarkModules,
benchmarkModulesAutogen,

-- * Build information
BuildInfo(..),
emptyBuildInfo,
allBuildInfo,
allLanguages,
allExtensions,
usedExtensions,
usesTemplateHaskellOrQQ,
hcOptions,
hcProfOptions,
hcSharedOptions,
hcStaticOptions,

-- ** Supplementary build information
allBuildDepends,
enabledBuildDepends,
ComponentName(..),
LibraryName(..),
defaultLibName,
HookedBuildInfo,
emptyHookedBuildInfo,
updatePackageDescription,

-- * package configuration
GenericPackageDescription(..),
PackageFlag(..), emptyFlag,
FlagName, mkFlagName, unFlagName,
FlagAssignment, mkFlagAssignment, unFlagAssignment,
nullFlagAssignment, showFlagValue,
diffFlagAssignment, lookupFlagAssignment, insertFlagAssignment,
dispFlagAssignment, parsecFlagAssignment,
findDuplicateFlagAssignments,
CondTree(..), ConfVar(..), Condition(..),
cNot, cAnd, cOr,

-- * Source repositories
SourceRepo(..),
RepoKind(..),
RepoType(..),
KnownRepoType (..),
knownRepoTypes,
emptySourceRepo,

-- * Custom setup build information
SetupBuildInfo(..),
-- * PD and GPD
module Distribution.Types.PackageDescription,
module Distribution.Types.GenericPackageDescription,
-- * Components
module Distribution.Types.ComponentName,
-- ** Library
module Distribution.Types.Library,
module Distribution.Types.LibraryName,
module Distribution.Types.LibraryVisibility,
-- ** Executable
module Distribution.Types.Executable,
module Distribution.Types.ExecutableScope,
-- ** TestSuite
module Distribution.Types.TestSuite,
module Distribution.Types.TestType,
module Distribution.Types.TestSuiteInterface,
-- ** Benchmark
module Distribution.Types.Benchmark,
module Distribution.Types.BenchmarkType,
module Distribution.Types.BenchmarkInterface,
-- ** Foreign library
module Distribution.Types.ForeignLib,
module Distribution.Types.ForeignLibType,
module Distribution.Types.ForeignLibOption,
-- * BuildInfo
module Distribution.Types.BuildType,
module Distribution.Types.BuildInfo,
module Distribution.Types.HookedBuildInfo,
module Distribution.Types.SetupBuildInfo,
-- * Flags
module Distribution.Types.Flag,
-- * Identifiers
module Distribution.Types.PackageId,
module Distribution.Types.PackageName,
module Distribution.Types.UnqualComponentName,
-- * Dependencies
module Distribution.Types.Dependency,
module Distribution.Types.ExeDependency,
module Distribution.Types.LegacyExeDependency,
module Distribution.Types.PkgconfigDependency,
-- * Condition trees
module Distribution.Types.CondTree,
module Distribution.Types.Condition,
module Distribution.Types.ConfVar,
-- * Source repository
module Distribution.Types.SourceRepo,
) where

import Prelude ()
--import Distribution.Compat.Prelude

import Distribution.Types.Library
import Distribution.Types.TestSuite
import Distribution.Types.Executable
import Distribution.Types.Benchmark
import Distribution.Types.TestType
import Distribution.Types.TestSuiteInterface
import Distribution.Types.BenchmarkType
import Distribution.Types.BenchmarkInterface
import Distribution.Types.ModuleRenaming
import Distribution.Types.ModuleReexport
import Distribution.Types.BenchmarkType
import Distribution.Types.BuildInfo
import Distribution.Types.SetupBuildInfo
import Distribution.Types.BuildType
import Distribution.Types.GenericPackageDescription
import Distribution.Types.CondTree
import Distribution.Types.Condition
import Distribution.Types.PackageDescription
import Distribution.Types.ComponentName
import Distribution.Types.LibraryName
import Distribution.Types.Condition
import Distribution.Types.CondTree
import Distribution.Types.ConfVar
import Distribution.Types.Dependency
import Distribution.Types.Executable
import Distribution.Types.ExecutableScope
import Distribution.Types.ExeDependency
import Distribution.Types.Flag
import Distribution.Types.ForeignLib
import Distribution.Types.ForeignLibOption
import Distribution.Types.ForeignLibType
import Distribution.Types.GenericPackageDescription
import Distribution.Types.HookedBuildInfo
import Distribution.Types.LegacyExeDependency
import Distribution.Types.Library
import Distribution.Types.LibraryName
import Distribution.Types.LibraryVisibility
import Distribution.Types.PackageDescription
import Distribution.Types.PackageId
import Distribution.Types.PackageName
import Distribution.Types.PkgconfigDependency
import Distribution.Types.SetupBuildInfo
import Distribution.Types.SourceRepo
import Distribution.Types.Flag
import Distribution.Types.ConfVar
import Distribution.Types.TestSuite
import Distribution.Types.TestSuiteInterface
import Distribution.Types.TestType
import Distribution.Types.UnqualComponentName
5 changes: 1 addition & 4 deletions Cabal/Distribution/PackageDescription/Check.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,7 @@ import Distribution.Simple.Glob
import Distribution.Simple.Utils hiding (findPackageDesc, notice)
import Distribution.System
import Distribution.Types.ComponentRequestedSpec
import Distribution.Types.CondTree
import Distribution.Types.ExeDependency
import Distribution.Types.LibraryName
import Distribution.Types.UnqualComponentName
import Distribution.Types.ModuleReexport
import Distribution.Utils.Generic (isAscii)
import Distribution.Verbosity
import Distribution.Version
Expand Down
54 changes: 24 additions & 30 deletions Cabal/Distribution/PackageDescription/Configuration.hs
Original file line number Diff line number Diff line change
Expand Up @@ -33,39 +33,33 @@ module Distribution.PackageDescription.Configuration (
transformAllBuildDepends,
) where

import Prelude ()
import Distribution.Compat.Prelude
import Prelude ()

-- lens
import qualified Distribution.Types.BuildInfo.Lens as L
import qualified Distribution.Types.BuildInfo.Lens as L
import qualified Distribution.Types.GenericPackageDescription.Lens as L
import qualified Distribution.Types.PackageDescription.Lens as L
import qualified Distribution.Types.SetupBuildInfo.Lens as L

import Distribution.PackageDescription
import Distribution.PackageDescription.Utils
import Distribution.Version
import Distribution.Compiler
import Distribution.System
import Distribution.Parsec
import Distribution.Pretty
import Distribution.Compat.CharParsing hiding (char)
import qualified Distribution.Compat.CharParsing as P
import Distribution.Simple.Utils
import Distribution.Compat.Lens
import Distribution.Types.ComponentRequestedSpec
import Distribution.Types.ForeignLib
import Distribution.Types.Component
import Distribution.Types.Dependency
import Distribution.Types.PackageName
import Distribution.Types.PackageVersionConstraint
import Distribution.Types.UnqualComponentName
import Distribution.Types.CondTree
import Distribution.Types.Condition
import Distribution.Types.DependencyMap

import qualified Data.Map.Lazy as Map
import Data.Tree ( Tree(Node) )
import qualified Distribution.Types.PackageDescription.Lens as L
import qualified Distribution.Types.SetupBuildInfo.Lens as L

import Distribution.Compat.CharParsing hiding (char)
import qualified Distribution.Compat.CharParsing as P
import Distribution.Compat.Lens
import Distribution.Compiler
import Distribution.PackageDescription
import Distribution.PackageDescription.Utils
import Distribution.Parsec
import Distribution.Pretty
import Distribution.Simple.Utils
import Distribution.System
import Distribution.Types.Component
import Distribution.Types.ComponentRequestedSpec
import Distribution.Types.DependencyMap
import Distribution.Types.PackageVersionConstraint
import Distribution.Version

import qualified Data.Map.Lazy as Map
import Data.Tree (Tree (Node))

------------------------------------------------------------------------------

Expand Down Expand Up @@ -127,7 +121,7 @@ parseCondition = condOr
flagIdent = fmap (PackageFlag . mkFlagName . lowercase) (munch1 isIdentChar)
isIdentChar c = isAlphaNum c || c == '_' || c == '-'
oper s = sp >> string s >> sp
sp = spaces
sp = spaces
implIdent = do i <- parsec
vr <- sp >> option anyVersion parsec
return $ Impl i vr
Expand Down
10 changes: 1 addition & 9 deletions Cabal/Distribution/PackageDescription/FieldGrammar.hs
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,8 @@ import Distribution.Package
import Distribution.PackageDescription
import Distribution.Parsec
import Distribution.Pretty (prettyShow)
import Distribution.Types.ExecutableScope
import Distribution.Types.ExeDependency (ExeDependency)
import Distribution.Types.ForeignLib
import Distribution.Types.ForeignLibOption (ForeignLibOption)
import Distribution.Types.ForeignLibType
import Distribution.Types.LegacyExeDependency (LegacyExeDependency)
import Distribution.Types.LibraryVisibility (LibraryVisibility (..))
import Distribution.Types.ModuleReexport
import Distribution.Types.Mixin (Mixin)
import Distribution.Types.PkgconfigDependency (PkgconfigDependency)
import Distribution.Types.UnqualComponentName
import Distribution.Version (Version, VersionRange)

import qualified Distribution.SPDX as SPDX
Expand Down
7 changes: 0 additions & 7 deletions Cabal/Distribution/PackageDescription/Parsec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@ import Distribution.Parsec.Position (Position (..), zeroPos)
import Distribution.Parsec.Warning (PWarnType (..))
import Distribution.Pretty (prettyShow)
import Distribution.Simple.Utils (fromUTF8BS, toUTF8BS)
import Distribution.Types.CondTree
import Distribution.Types.Dependency (Dependency)
import Distribution.Types.ForeignLib
import Distribution.Types.ForeignLibType (knownForeignLibTypes)
import Distribution.Types.GenericPackageDescription (emptyGenericPackageDescription)
import Distribution.Types.LibraryVisibility (LibraryVisibility (..))
import Distribution.Types.UnqualComponentName (UnqualComponentName, mkUnqualComponentName)
import Distribution.Utils.Generic (breakMaybe, unfoldrM, validateUTF8)
import Distribution.Verbosity (Verbosity)
import Distribution.Version (Version, mkVersion, versionNumbers)
Expand Down
Loading