···11# Nix script to lookup maintainer github handles from their email address. Used by ./hydra-report.hs.
22+#
33+# This script produces an attr set mapping of email addresses to GitHub handles:
44+#
55+# ```nix
66+# > import ./maintainer-handles.nix
77+# { "cdep.illabout@gmail.com" = "cdepillabout"; "john@smith.com" = "johnsmith"; ... }
88+# ```
99+#
1010+# This mapping contains all maintainers in ../../mainatainer-list.nix, but it
1111+# ignores maintainers who don't have a GitHub account or an email address.
212let
313 pkgs = import ../../.. {};
414 maintainers = import ../../maintainer-list.nix;
515 inherit (pkgs) lib;
66- mkMailGithubPair = _: maintainer: if maintainer ? github then { "${maintainer.email}" = maintainer.github; } else {};
1616+ mkMailGithubPair = _: maintainer:
1717+ if (maintainer ? email) && (maintainer ? github) then
1818+ { "${maintainer.email}" = maintainer.github; }
1919+ else
2020+ {};
721in lib.zipAttrsWith (_: builtins.head) (lib.mapAttrsToList mkMailGithubPair maintainers)
+4-4
pkgs/data/misc/hackage/pin.json
···11{
22- "commit": "75d1bbbd68d9ae36d527666e2f140343323b02fa",
33- "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/75d1bbbd68d9ae36d527666e2f140343323b02fa.tar.gz",
44- "sha256": "018lz90f12bw8n8g4rbwfbnpmw6g3vblc12pd4qzq727h1d27p5l",
55- "msg": "Update from Hackage at 2023-01-12T12:18:29Z"
22+ "commit": "307653b893cc53ffa71d6931c33101d352e3ead1",
33+ "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/307653b893cc53ffa71d6931c33101d352e3ead1.tar.gz",
44+ "sha256": "0mgmmzdlb9j4drkjjdrp2da8z4can7gg8zd007ya2jw17rz270hz",
55+ "msg": "Update from Hackage at 2023-01-29T01:30:53Z"
66}
+8
pkgs/development/compilers/ghc/8.10.2-binary.nix
···122122 # instead of `libtinfo.so.*.`
123123 { nixPackage = ncurses6; fileToCheckFor = "libncursesw.so.6"; }
124124 ];
125125+ isHadrian = true;
125126 };
126127 };
127128 };
···420421421422 # Our Cabal compiler name
422423 haskellCompilerName = "ghc-${version}";
424424+ } // lib.optionalAttrs (binDistUsed.isHadrian or false) {
425425+ # Normal GHC derivations expose the hadrian derivation used to build them
426426+ # here. In the case of bindists we just make sure that the attribute exists,
427427+ # as it is used for checking if a GHC derivation has been built with hadrian.
428428+ # The isHadrian mechanism will become obsolete with GHCs that use hadrian
429429+ # exclusively, i.e. 9.6 (and 9.4?).
430430+ hadrian = null;
423431 };
424432425433 meta = rec {
+8
pkgs/development/compilers/ghc/8.10.7-binary.nix
···137137 # instead of `libtinfo.so.*.`
138138 { nixPackage = ncurses6; fileToCheckFor = "libncursesw.so.6"; }
139139 ];
140140+ isHadrian = true;
140141 };
141142 };
142143 };
···416417417418 # Our Cabal compiler name
418419 haskellCompilerName = "ghc-${version}";
420420+ } // lib.optionalAttrs (binDistUsed.isHadrian or false) {
421421+ # Normal GHC derivations expose the hadrian derivation used to build them
422422+ # here. In the case of bindists we just make sure that the attribute exists,
423423+ # as it is used for checking if a GHC derivation has been built with hadrian.
424424+ # The isHadrian mechanism will become obsolete with GHCs that use hadrian
425425+ # exclusively, i.e. 9.6 (and 9.4?).
426426+ hadrian = null;
419427 };
420428421429 meta = rec {
+10
pkgs/development/compilers/ghc/9.2.4-binary.nix
···9494 { nixPackage = ncurses6; fileToCheckFor = null; }
9595 { nixPackage = libiconv; fileToCheckFor = null; }
9696 ];
9797+ isHadrian = true;
9798 };
9899 aarch64-darwin = {
99100 variantSuffix = "";
···107108 { nixPackage = ncurses6; fileToCheckFor = null; }
108109 { nixPackage = libiconv; fileToCheckFor = null; }
109110 ];
111111+ isHadrian = true;
110112 };
111113 };
112114 # Binary distributions for the musl libc for the respective system.
···118120 sha256 = "026348947d30a156b84de5d6afeaa48fdcb2795b47954cd8341db00d3263a481";
119121 };
120122 isStatic = true;
123123+ isHadrian = true;
121124 # We can't check the RPATH for statically linked executable
122125 exePathForLibraryCheck = null;
123126 archSpecificLibraries = [
···400403401404 # Our Cabal compiler name
402405 haskellCompilerName = "ghc-${version}";
406406+ } // lib.optionalAttrs (binDistUsed.isHadrian or false) {
407407+ # Normal GHC derivations expose the hadrian derivation used to build them
408408+ # here. In the case of bindists we just make sure that the attribute exists,
409409+ # as it is used for checking if a GHC derivation has been built with hadrian.
410410+ # The isHadrian mechanism will become obsolete with GHCs that use hadrian
411411+ # exclusively, i.e. 9.6 (and 9.4?).
412412+ hadrian = null;
403413 };
404414405415 meta = rec {
···464464 allowInconsistentDependencies = overrideCabal (drv: {
465465 allowInconsistentDependencies = true;
466466 });
467467+468468+ # Work around a Cabal bug requiring pkg-config --static --libs to work even
469469+ # when linking dynamically, affecting Cabal 3.8 and 3.9.
470470+ # https://github.com/haskell/cabal/issues/8455
471471+ #
472472+ # For this, we treat the runtime system/pkg-config dependencies of a Haskell
473473+ # derivation as if they were propagated from their dependencies which allows
474474+ # pkg-config --static to work in most cases.
475475+ #
476476+ # Warning: This function may change or be removed at any time, e.g. if we find
477477+ # a different workaround, upstream fixes the bug or we patch Cabal.
478478+ __CabalEagerPkgConfigWorkaround =
479479+ let
480480+ # Take list of derivations and return list of the transitive dependency
481481+ # closure, only taking into account buildInputs. Loosely based on
482482+ # closePropagationFast.
483483+ propagatedPlainBuildInputs = drvs:
484484+ builtins.map (i: i.val) (
485485+ builtins.genericClosure {
486486+ startSet = builtins.map (drv:
487487+ { key = drv.outPath; val = drv; }
488488+ ) drvs;
489489+ operator = { val, ... }:
490490+ if !lib.isDerivation val
491491+ then [ ]
492492+ else
493493+ builtins.concatMap (drv:
494494+ if !lib.isDerivation drv
495495+ then [ ]
496496+ else [ { key = drv.outPath; val = drv; } ]
497497+ ) (val.buildInputs or [ ] ++ val.propagatedBuildInputs or [ ]);
498498+ }
499499+ );
500500+ in
501501+ overrideCabal (old: {
502502+ benchmarkPkgconfigDepends = propagatedPlainBuildInputs old.benchmarkPkgconfigDepends or [ ];
503503+ executablePkgconfigDepends = propagatedPlainBuildInputs old.executablePkgconfigDepends or [ ];
504504+ libraryPkgconfigDepends = propagatedPlainBuildInputs old.libraryPkgconfigDepends or [ ];
505505+ testPkgconfigDepends = propagatedPlainBuildInputs old.testPkgconfigDepends or [ ];
506506+ });
467507}