Split up LocalBuildInfo
commit37779f6564ef8073bb094e75687a1b972c99353b
authorsheaf <sam.derbyshire@gmail.com>
Fri, 24 Nov 2023 12:42:22 +0000 (24 13:42 +0100)
committerMikolaj <281893+Mikolaj@users.noreply.github.com>
Thu, 11 Jan 2024 19:57:43 +0000 (11 19:57 +0000)
tree3cc8e83a141fca14fbd1df306114b5597075ee31
parentfeb5a0b71c96d52b79b2db2f2f40cbd6386514e5
Split up LocalBuildInfo

The aim of this commit is to modularise LocalBuildInfo to better
reflect implicit invariants.

The top-level split

  data LocalBuildInfo =
    NewLocalBuildInfo
      { localBuildDescr  :: LocalBuildDescr
      , localBuildConfig :: LocalBuildConfig
      }

reflects which part of a LocalBuildInfo are set in stone by Cabal
(the LocalBuildDescr), while LocalBuildConfig contains options that
can be controlled/modified by the user in some way.

The split

  data LocalBuildDescr =
    LocalBuildDescr
    { packageBuildDescr :: PackageBuildDescr
    , componentBuildDescr :: ComponentBuildDescr
    }

reflects that some parts of the information determined at configuration
time resides at the package level, while other pieces of information
are pertinent to individual components.

Finally the structure of LocalBuildConfig is aimed to reduce code
duplication between the Cabal library and cabal-install.
Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs
Cabal/Cabal.cabal
Cabal/src/Distribution/Simple/BuildTarget.hs
Cabal/src/Distribution/Simple/Configure.hs
Cabal/src/Distribution/Simple/LocalBuildInfo.hs
Cabal/src/Distribution/Simple/Test/ExeV10.hs
Cabal/src/Distribution/Types/LocalBuildConfig.hs [new file with mode: 0644]
Cabal/src/Distribution/Types/LocalBuildInfo.hs
cabal-install/src/Distribution/Client/Run.hs