Skip to content

Commit

Permalink
Cleanup failed experiments away
Browse files Browse the repository at this point in the history
  • Loading branch information
Blaisorblade committed Aug 9, 2016
1 parent 241df53 commit fca1377
Showing 1 changed file with 5 additions and 40 deletions.
45 changes: 5 additions & 40 deletions Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,14 @@ import Data.Ord ( comparing )
import Data.Version ( showVersion )
import Distribution.Package ( PackageName(PackageName), PackageId, InstalledPackageId, packageVersion, packageName )
import Distribution.PackageDescription ( PackageDescription(), TestSuite(..), Executable(..) )
import Distribution.InstalledPackageInfo (sourcePackageId, installedPackageId)
import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )
import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose )
import Distribution.Simple.BuildPaths ( autogenModulesDir )
import Distribution.Simple.PackageIndex (allPackages, dependencyClosure)
import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), fromFlag )
import Distribution.Simple.LocalBuildInfo ( installedPkgs, withLibLBI, withTestLBI, withExeLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )
import Distribution.Verbosity ( Verbosity )

import qualified Distribution.InstalledPackageInfo as InstalledPackageInfo
import qualified Distribution.Simple.PackageIndex as Cabal

import System.FilePath ( (</>) )

main :: IO ()
Expand All @@ -25,37 +23,6 @@ main = defaultMainWithHooks simpleUserHooks
buildHook simpleUserHooks pkg lbi hooks flags
}

{-
-- From https://github.com/jaspervdj/cabal-dependency-licenses/blob/a7571b29b35af79fbd936d8436b75e2ab25a1e07/src/Main.hs#L40
#if MIN_VERSION_Cabal(1,24,0)
type PackageIndex a = Cabal.PackageIndex InstalledPackageInfo.InstalledPackageInfo
#elif MIN_VERSION_Cabal(1,22,0)
type PackageIndex a = Cabal.PackageIndex (InstalledPackageInfo.InstalledPackageInfo_ a)
#else
type PackageIndex a = Cabal.PackageIndex
#endif
findTransitiveDependencies
:: PackageIndex a
-> Set Cabal.InstalledPackageId
-> Set Cabal.InstalledPackageId
findTransitiveDependencies pkgIdx set0 = go Set.empty (Set.toList set0)
where
go set [] = set
go set (q : queue)
| q `Set.member` set = go set queue
| otherwise =
case Cabal.lookupInstalledPackageId pkgIdx q of
Nothing ->
-- Not found can mean that the package still needs to be
-- installed (e.g. a component of the target cabal package).
-- We can ignore those.
go set queue
Just ipi ->
go (Set.insert q set)
(InstalledPackageInfo.depends ipi ++ queue)
-}

generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
generateBuildModule verbosity pkg lbi = do
let dir = autogenModulesDir lbi
Expand Down Expand Up @@ -83,14 +50,12 @@ generateBuildModule verbosity pkg lbi = do
formatone p = unPackageName' p ++ "-" ++ showVersion (packageVersion p)
unPackageName' p = case packageName p of PackageName n -> n
transDeps xs ys =
--let res1 = map InstalledPackageInfo.sourcePackageId . Cabal.allPackages . installedPkgs $ lbi in
either (map InstalledPackageInfo.sourcePackageId . Cabal.allPackages) handleDepClosureFailure $ Cabal.dependencyClosure allInstPkgsIdx $ availInstPkgIds
either (map sourcePackageId . allPackages) handleDepClosureFailure $ dependencyClosure allInstPkgsIdx availInstPkgIds
where
allInstPkgsIdx = installedPkgs lbi
allInstPkgIds = map InstalledPackageInfo.installedPackageId . Cabal.allPackages $ allInstPkgsIdx
allInstPkgIds = map installedPackageId $ allPackages allInstPkgsIdx
-- instPkgIds includes `stack-X.X.X`, which is not a depedency hence is missing from allInstPkgsIdx. Filter that out.
availInstPkgIds = filter (`elem` allInstPkgIds) instPkgIds
(instPkgIds, _pkgIds) = unzip $ testDeps xs ys
availInstPkgIds = filter (`elem` allInstPkgIds) . map fst $ testDeps xs ys
handleDepClosureFailure unsatisfied =
error $
"Computation of transitive dependencies failed." ++
Expand Down

0 comments on commit fca1377

Please sign in to comment.