@@ -37,31 +37,50 @@ dimension "Nixpkgs version" nixpkgsVersions (nixpkgsName: nixpkgs-pin:
37
37
let pkgs = import pinnedNixpkgsSrc ( nixpkgsArgs // { inherit system ; } ) ;
38
38
build = import ./build.nix { inherit pkgs ifdLevel ; } ;
39
39
platformFilter = platformFilterGeneric pkgs system ;
40
+ compilers = {
41
+ inherit ( pkgs . haskell-nix . compiler ) ghc865 ghc883 ;
42
+ } ;
40
43
in filterAttrsOnlyRecursive ( _ : v : platformFilter v ) {
41
44
# Native builds
42
45
# TODO: can we merge this into the general case by picking an appropriate "cross system" to mean native?
43
- native = pkgs . recurseIntoAttrs {
46
+ native = pkgs . recurseIntoAttrs ( {
44
47
inherit ( build ) tests tools maintainer-scripts maintainer-script-cache ;
48
+ ghc = pkgs . recurseIntoAttrs compilers ;
49
+ } // pkgs . lib . optionalAttrs ( ifdLevel >= 1 ) {
50
+ iserv-proxy = pkgs . recurseIntoAttrs (
51
+ pkgs . lib . mapAttrs ( ghcName : _ :
52
+ pkgs . ghc-extra-packages . "${ ghcName } " . iserv-proxy . components . exes . iserv-proxy
53
+ ) compilers ) ;
54
+ } // pkgs . lib . optionalAttrs ( ifdLevel >= 2 ) {
45
55
hello = ( pkgs . haskell-nix . hackage-package { name = "hello" ; version = "1.0.0.2" ; } ) . components . exes . hello ;
46
- iserv-proxy = pkgs . ghc-extra-packages . ghc865 . iserv-proxy . components . exes . iserv-proxy ;
47
- ghc = pkgs . recurseIntoAttrs pkgs . haskell-nix . compiler ;
48
- } ;
56
+ } ) ;
49
57
}
50
58
//
51
59
dimension "Cross system" ( crossSystems nixpkgsName genericPkgs system ) ( crossSystemName : crossSystem :
52
60
# Cross builds
53
61
let pkgs = import pinnedNixpkgsSrc ( nixpkgsArgs // { inherit system crossSystem ; } ) ;
54
62
build = import ./build.nix { inherit pkgs ifdLevel ; } ;
55
- in pkgs . recurseIntoAttrs {
63
+ in pkgs . recurseIntoAttrs ( pkgs . lib . optionalAttrs ( ifdLevel >= 1 ) {
64
+ ghc = pkgs . recurseIntoAttrs compilers ;
56
65
# TODO: look into making tools work when cross compiling
57
66
# inherit (build) tools;
67
+ } // pkgs . lib . optionalAttrs ( ifdLevel >= 2 ) {
68
+ remote-iserv = pkgs . recurseIntoAttrs (
69
+ pkgs . lib . mapAttrs ( ghcName : _ :
70
+ pkgs . ghc-extra-packages . "${ ghcName } " . remote-iserv . components . exes . remote-iserv
71
+ ) compilers ) ;
72
+ iserv-proxy = pkgs . recurseIntoAttrs (
73
+ pkgs . lib . mapAttrs ( ghcName : _ :
74
+ pkgs . ghc-extra-packages . "${ ghcName } " . iserv-proxy . components . exes . iserv-proxy
75
+ ) compilers ) ;
76
+ } // pkgs . lib . optionalAttrs ( ifdLevel >= 3 ) {
58
77
hello = ( pkgs . haskell-nix . hackage-package { name = "hello" ; version = "1.0.0.2" ; } ) . components . exes . hello ;
59
- iserv-proxy = pkgs . ghc-extra-packages . ghc865 . iserv-proxy . components . exes . iserv-proxy ;
60
- remote-iserv = pkgs . ghc-extra-packages . ghc865 . remote-iserv . components . exes . remote-iserv ;
61
78
}
62
79
//
63
80
# Tests are broken on aarch64 cross https://github.com/input-output-hk/haskell.nix/issues/513
64
- pkgs . lib . optionalAttrs ( crossSystemName != "aarch64-multiplatform" ) { inherit ( build ) tests ; }
81
+ pkgs . lib . optionalAttrs ( crossSystemName != "aarch64-multiplatform" ) {
82
+ inherit ( build ) tests ;
83
+ } )
65
84
)
66
85
)
67
86
)
0 commit comments