@@ -1,153 +0,0 @@
14− mergeComponents = lib.zipAttrsWith (_: comps: lib.genAttrs [
21− ${n} = lib.concatMap (comp: comp.${n} or []) comps;
24− unionrAttrs = lib.foldr (a: b: a // b) {};
26− mergeConfigs = configs:
28− mergeComponentType = type: mergeComponents (map (conf: (conf.components or {}).${type} or {}) configs);
29− in unionrAttrs configs // {
30− flags = unionrAttrs (map (conf: conf.flags or {}) configs);
31− package = lib.foldr (conf: lib.recursiveUpdate (conf.package or {})) {} configs;
33− mergeComponents (map (conf: removeAttrs (conf.components or {}) subComponentTypes) configs)
34− // lib.genAttrs subComponentTypes mergeComponentType;
35− configureFlags = concatMap (conf: conf.configureFlags or []) configs;
38− foldrAttrVals = f: z: attrs:
39− lib.foldr (g: acc: g acc) z (lib.mapAttrsToList f attrs);
41− attrLength = attrs: builtins.length (builtins.attrValues attrs);
43− foldComponents = tys: f: z: conf:
45− comps = conf.components or {};
46− foldSection = foldrAttrVals f;
49− (removeAttrs comps subComponentTypes);
52− (ty: acc': foldSection acc' (comps.${ty} or {}))
55− in libComp (subComps z);
58− # Are all of these right?
60− foreignlibs = "foreignlib";
63− benchmarks = "bench";
66− applyComponents = f: comps:
68− libComp = lib.mapAttrs (cname: f {ctype="lib"; inherit cname;}) (removeAttrs comps subComponentTypes);
69− subComps = lib.mapAttrs
70− (ctype: lib.mapAttrs (cname: f {inherit cname; ctype=componentPrefix.${ctype};}))
71− (builtins.intersectAttrs (lib.genAttrs subComponentTypes (_: null)) comps);
72− in subComps // libComp;
74− isLibrary = componentId: componentId.ctype == "lib";
76− adjustHackage = hackage: args:
80− revs = builtins.removeAttrs vdata ["sha256"];
81− rev2HashedConfig = name: rev: { name = rev.cabalSha256; value = revConfigs.${name}; };
82− revConfigs = lib.mapAttrs (_: rev2config vdata.sha256) revs;
83− in revConfigs // lib.mapAttrs' rev2HashedConfig revs;
84− rev2config = sha256: rev: self: import rev (args // { inherit (self) flags; }) // {
86− inherit (rev) cabalFile;
88− in lib.mapAttrs (_: lib.mapAttrs (_: handleVer)) hackage;
90− buildPlan = { pkgs, plan }:
92− ghc = pkgs.haskell.compiler.${plan.compiler.nix-name};
93− weakCallPackage = scope: f: args:
94− let f' = if lib.isFunction f then f else import f;
95− args' = scope // args;
96− in f' (builtins.intersectAttrs (builtins.functionArgs f') args');
98− new-builder = weakCallPackage pkgs ./builder {
99− inherit haskellLib ghc weakCallPackage;
101− cabal = import ./lib/cabal-os-arch-comp.nix;
102− configs = lib.mapAttrs (_: lib.fix) plan.packages;
105− let hostMap = import ./lib/host-map.nix pkgs.stdenv;
106− in cabal.os // { "is${hostMap.os}" = true; }
107− // cabal.arch // { "is${hostMap.arch}" = true; };
108− compiler = cabal.compiler // {
110− version = lib.mapAttrs (_: f: v: f (builtins.compareVersions plan.compiler.version v)) {
118− pkgconfPkgs = pkgs // {
119− cairo-pdf = pkgs.cairo;
120− cairo-ps = pkgs.cairo;
121− cairo-svg = pkgs.cairo;
122− xft = pkgs.xorg.libXft;
123− xau = pkgs.xorg.libXau;
125− fftw3f = pkgs.fftwFloat;
131− ssl = pkgs.openssl.dev;
132− crypto = pkgs.openssl.dev;
136− alut = pkgs.freealut;
137− X11 = pkgs.xorg.libX11;
138− Xrandr = pkgs.xorg.libXrandr;
139− Xext = pkgs.xorg.libXext;
140− Xi = pkgs.xorg.libXi;
141− Xxf86vm = pkgs.xorg.libXxf86vm;
142− Xcursor = pkgs.xorg.libXcursor;
143− Xinerama = pkgs.xorg.libXinerama;
144− mysqlclient = pkgs.mysql;
145− Imlib2 = pkgs.imlib2;
146− asound = pkgs.alsaLib;
149− hsPkgs = lib.mapAttrs (_: _: null) (plan.compiler.packages // { hsc2hs = "0.68.2"; })
150− // lib.mapAttrs (_: new-builder) configs;