packages feed

hix-0.9.0: lib/Hix/Managed/Cabal/Mock.hs

{-# language CPP #-}

module Hix.Managed.Cabal.Mock where

import Distribution.Simple (buildCompilerId, unknownCompilerInfo)
import Distribution.Simple.Compiler (AbiTag (NoAbiTag))
import Distribution.Solver.Types.PkgConfigDb (PkgConfigDb (..))
import Distribution.System (Arch (X86_64), OS (Linux), Platform (Platform))

import Hix.Data.PackageName (LocalPackage)
import qualified Hix.Managed.Cabal.Data.Packages
import Hix.Managed.Cabal.Data.Packages (GhcPackages (GhcPackages))
import qualified Hix.Managed.Cabal.Data.SolveResources
import Hix.Managed.Cabal.Data.SolveResources (SolveResources (SolveResources))
import Hix.Managed.Cabal.Init (emptySolveFlags)
import Hix.Managed.Cabal.Mock.InstalledPackage (mockInstalledPackageIndex)
import qualified Hix.Managed.Cabal.Mock.SourcePackage as SourcePackage
import Hix.Managed.Cabal.Mock.SourcePackage (mockSourcePackageDb)
import Hix.Managed.Data.ManagedPackage (ManagedPackage)
import Hix.Managed.Data.Packages (Packages)

mockSolveResources ::
  Packages ManagedPackage ->
  GhcPackages ->
  (SolveResources, Set LocalPackage)
mockSolveResources packages GhcPackages {installed, available} =
  (resources, localUnavailable)
  where
    resources =
      SolveResources {
        conf = def,
        flags = emptySolveFlags,
        platform = Platform X86_64 Linux,
        compiler = unknownCompilerInfo buildCompilerId NoAbiTag,
#if MIN_VERSION_cabal_install_solver(3,14,0)
        pkgConfigDb = PkgConfigDb mempty,
#else
        pkgConfigDb = NoPkgConfigDb,
#endif
        installedPkgIndex = mockInstalledPackageIndex installed,
        sourcePkgDb,
        solverParams = id
      }

    (sourcePkgDb, localUnavailable) = SourcePackage.dbWithManaged packages (mockSourcePackageDb available)