@@ -665,12 +665,14 @@ final: prev: {
665
665
if by-id . ${ d } . component-name or "lib" == "lib"
666
666
then hsPkgs . ${ to-key by-id . ${ d } } or hsPkgs . ${ by-id . ${ d } . pkg-name }
667
667
else hsPkgs . ${ to-key by-id . ${ d } } . components . sublibs . ${ final . lib . removePrefix "lib:" by-id . ${ d } . component-name } ) ;
668
- lookupDependencies = hsPkgs : depends :
669
- final . lib . concatMap ( lookupDependency hsPkgs ) depends
670
- ++ lookupPreExisting depends ;
671
668
lookupExeDependency = hsPkgs : d :
672
669
# Try to lookup by ID, but if that fails use the name (currently a different plan is used by pkgsBuildBuild when cross compiling)
673
670
( hsPkgs . pkgsBuildBuild . ${ to-key by-id . ${ d } } or hsPkgs . pkgsBuildBuild . ${ by-id . ${ d } . pkg-name } ) . components . exes . ${ final . lib . removePrefix "exe:" by-id . ${ d } . component-name } ;
671
+ lookupDependencies = hsPkgs : depends : exe-depends : {
672
+ depends = final . lib . concatMap ( lookupDependency hsPkgs ) depends ;
673
+ pre-existing = lookupPreExisting depends ;
674
+ build-tools = map ( lookupExeDependency hsPkgs ) exe-depends ;
675
+ } ;
674
676
getComponents = cabal2nixComponents : hsPkgs : p :
675
677
let
676
678
components = p . components or { ${ p . component-name or "lib" } = { inherit ( p ) depends ; exe-depends = p . exe-depends or [ ] ; } ; } ;
@@ -681,19 +683,19 @@ final: prev: {
681
683
name = final . lib . removePrefix "${ prefix } :" n ;
682
684
value = ( if cabal2nixComponents == null then { } else cabal2nixComponents . ${ collectionName } . ${ name } ) // {
683
685
buildable = true ;
684
- depends = lookupDependencies hsPkgs c . depends ;
685
- build-tools = map lookupExeDependency c . exe-depends ;
686
- } ;
686
+ } // lookupDependencies hsPkgs c . depends c . exe-depends ;
687
687
in { inherit name value ; }
688
688
) ) components ) ) ;
689
689
in
690
690
final . lib . mapAttrs componentsWithPrefix haskellLib . componentPrefix
691
691
// final . lib . optionalAttrs ( components ? lib ) {
692
692
library = ( if cabal2nixComponents == null then { } else cabal2nixComponents . library ) // {
693
693
buildable = true ;
694
- depends = lookupDependencies hsPkgs components . lib . depends ;
695
- build-tools = map ( lookupExeDependency hsPkgs ) components . lib . exe-depends ;
696
- } ;
694
+ } // lookupDependencies hsPkgs components . lib . depends components . lib . exe-depends ;
695
+ } // final . lib . optionalAttrs ( components ? setup ) {
696
+ setup = {
697
+ buildable = true ;
698
+ } // lookupDependencies hsPkgs ( components . setup . depends or [ ] ) ( components . setup . exe-depends or [ ] ) ;
697
699
} ;
698
700
callProjectResults = callCabalProjectToNix config ;
699
701
nixFilesDir = callProjectResults . projectNix + callProjectResults . src . origSubDir or "" ;
@@ -732,8 +734,7 @@ final: prev: {
732
734
package = cabal2nix . package // {
733
735
identifier = { name = p . pkg-name ; version = p . pkg-version ; } ;
734
736
isProject = false ;
735
- setup-depends = lookupDependencies hsPkgs . pkgsBuildBuild ( p . components . setup . depends or [ ] ) ;
736
- # TODO = map (lookupExeDependency hsPkgs.pkgsBuildBuild) (p.components.setup.exe-depends or []);
737
+ setup-depends = [ ] ;
737
738
} ;
738
739
} ;
739
740
} ) plan-json . install-plan ) ;
@@ -762,8 +763,7 @@ final: prev: {
762
763
package = cabal2nix . package // {
763
764
identifier = { name = p . pkg-name ; version = p . pkg-version ; } ;
764
765
isProject = true ;
765
- setup-depends = lookupDependencies hsPkgs . pkgsBuildBuild ( p . components . setup . depends or [ ] ) ;
766
- # TODO = map (lookupExeDependency hsPkgs.pkgsBuildBuild) (p.components.setup.exe-depends or []);
766
+ setup-depends = [ ] ;
767
767
} ;
768
768
} ;
769
769
} ) plan-json . install-plan ) ;
@@ -803,7 +803,7 @@ final: prev: {
803
803
in {
804
804
name = to-key p ;
805
805
value . components = final . lib . mapAttrs ( type : x :
806
- if type == "library"
806
+ if type == "library" || type == "setup"
807
807
then { planned = lib . mkOverride 900 true ; }
808
808
else
809
809
final . lib . mapAttrs ( _ : _ : {
@@ -835,7 +835,7 @@ final: prev: {
835
835
else config . hsPkgs . ${ ( builtins . head available ) . id } . components . ${ collectionName } . ${ name } ;
836
836
componentsWithPrefix = collectionName : prefix :
837
837
final . lib . listToAttrs ( final . lib . concatLists ( final . lib . mapAttrsToList ( n : available :
838
- final . lib . optional ( final . lib . hasPrefix "${ prefix } :" n && ( builtins . length available != 1 || builtins . head available != "TargetNotBuildable" ) ) (
838
+ final . lib . optional ( final . lib . hasPrefix "${ prefix } :" n && ( builtins . length available != 1 || ! builtins . elem ( builtins . head available ) [ "TargetNotBuildable" "TargetNotLocal" ] ) ) (
839
839
let
840
840
name = final . lib . removePrefix "${ prefix } :" n ;
841
841
value = lookupComponent collectionName name available ;
0 commit comments