From 4dfb76f24ba2ef776763a4fb5f8077a67717a062 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Fri, 21 Oct 2016 13:16:36 -0700 Subject: [PATCH] Allocate different ComponentId for lib and exe. In the old code, we assumed that only libraries could get installed, but with executable dependencies this is no longer true. Handle it correctly. This bug caused cycles in the elaborated install plan which could cause dependency closure to fail, resulting in weird errors. Fixes #3996. Signed-off-by: Edward Z. Yang --- cabal-install/Distribution/Client/ProjectPlanning.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cabal-install/Distribution/Client/ProjectPlanning.hs b/cabal-install/Distribution/Client/ProjectPlanning.hs index 3827a8e22a6..2a8db6a60cd 100644 --- a/cabal-install/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/Distribution/Client/ProjectPlanning.hs @@ -2824,7 +2824,10 @@ packageHashInputs }) = PackageHashInputs { pkgHashPkgId = packageId elab, - pkgHashComponent = Nothing, + pkgHashComponent = + case elabPkgOrComp elab of + ElabPackage _ -> Nothing + ElabComponent comp -> Just (compSolverName comp), pkgHashSourceHash = srchash, pkgHashPkgConfigDeps = Set.fromList (elabPkgConfigDependencies elab), pkgHashDirectDeps =