@@ -4,9 +4,11 @@ module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess, pkg ) w
5import Control.Lens
5import Control.Lens
6import Data.List.Split
6import Data.List.Split
7+import Data.Map ( Map )
8+import qualified Data.Map as Map
7import Data.Set ( Set )
10import Data.Set ( Set )
8import qualified Data.Set as Set
11import qualified Data.Set as Set
10import Distribution.Nixpkgs.Haskell
12import Distribution.Nixpkgs.Haskell
11import Distribution.Nixpkgs.Meta
13import Distribution.Nixpkgs.Meta
12import Distribution.Package
14import Distribution.Package
@@ -24,13 +26,15 @@ fixGtkBuilds drv = drv & dependencies . pkgconfig %~ Set.filter (not . collidesW
24 & dependencies . tool %~ Set.filter (not . collidesWithHaskellName)
26 & dependencies . tool %~ Set.filter (not . collidesWithHaskellName)
26 collidesWithHaskellName :: Binding -> Bool
28 collidesWithHaskellName :: Binding -> Bool
27− collidesWithHaskellName b = view localName b `Set.member` buildDeps
29+ collidesWithHaskellName b = case buildDeps Map.!? view localName b of
30+ Nothing -> False -- totally uncollided
31+ Just p -> p /= view reference b -- identical is not collision, and important to preserve for cross
29 myName :: Identifier
33 myName :: Identifier
30 myName = ident # unPackageName (packageName drv)
34 myName = ident # unPackageName (packageName drv)
32− buildDeps :: Set Identifier
36+ buildDeps :: Map Identifier Path
33− buildDeps = Set.delete myName (setOf (dependencies . haskell . folded . localName) drv)
37+ buildDeps = Map.delete myName (toMapOf (dependencies . haskell . to Set.toList . traverse . binding . ifolded) drv)
35hooks :: [(Dependency, Derivation -> Derivation)]
39hooks :: [(Dependency, Derivation -> Derivation)]