@@ -323,6 +323,10 @@ deleteUnitId ipkgid original@(PackageIndex pids pnames) =
323323        .  List. deleteBy (\ _ pkg ->  installedUnitId pkg ==  ipkgid) undefined 
324324
325325--  |  Removes all packages with this source 'PackageId' from the index. 
326+ -- 
327+ --  The Index maps unitids to instances, however we may have multiple unitids 
328+ --  for the same package. Especially if for multiple compilers, as such we need 
329+ --  to ensure we don't delete by name/version, but by name/version/compiler only. 
326330deleteSourcePackageId
327331  ::  PackageId 
328332  ->  InstalledPackageIndex 
@@ -333,11 +337,13 @@ deleteSourcePackageId pkgid original@(PackageIndex pids pnames) =
333337    Nothing  ->  original
334338    Just  pvers ->  case  Map. lookup  (packageVersion pkgid) pvers of 
335339      Nothing  ->  original
336-       Just  pkgs -> 
337-         mkPackageIndex
338-           (foldl' (flip  (Map. delete .  installedUnitId)) pids pkgs)
339- --           (Map.update deletePkgInstance (installedUnitId pkgid) pids)
340-           (deletePkgName pnames)
340+       Just  pkgs ->  case  [pkg |  pkg <-  pkgs, IPI. pkgCompiler pkg ==  pkgCompiler pkgid] of 
341+         []  ->  original
342+         pkgs' -> 
343+           mkPackageIndex
344+             (foldl' (flip  (Map. delete .  installedUnitId)) pids pkgs')
345+             (deletePkgName pnames)
346+ 
341347  where 
342348    deletePkgName = 
343349      Map. update deletePkgVersion (packageName pkgid, LMainLibName )
@@ -354,7 +360,7 @@ deleteSourcePackageId pkgid original@(PackageIndex pids pnames) =
354360
355361    deletePkgInstances  ::  [IPI. InstalledPackageInfo ] ->  Maybe   [IPI. InstalledPackageInfo ]
356362    deletePkgInstances xs =  if  null  xs' then  Nothing  else  Just  xs'
357-       where  xs' =  [x |  x <-  xs, pkgCompiler pkgid /=  pkgCompiler ( IPI. sourcePackageId x) ]
363+       where  xs' =  [x |  x <-  xs, pkgCompiler pkgid /=  IPI. pkgCompiler x ]
358364
359365--  |  Removes all packages with this (case-sensitive) name from the index. 
360366-- 
0 commit comments