Merge pull request #101741 from SuperSandro2000/check-hydra

maintainer scripts: init check-hydra-by-maintainer.nix

Sandro ab6dc6eb 59c03dc6

Changed files
+67
maintainers
+67
maintainers/scripts/check-hydra-by-maintainer.nix
···
+
{ maintainer }:
+
let
+
pkgs = import ./../../default.nix { };
+
maintainer_ = pkgs.lib.maintainers.${maintainer};
+
packagesWith = cond: return: prefix: set:
+
(pkgs.lib.flatten
+
(pkgs.lib.mapAttrsToList
+
(name: pkg:
+
let
+
result = builtins.tryEval
+
(
+
if pkgs.lib.isDerivation pkg && cond name pkg then
+
# Skip packages whose closure fails on evaluation.
+
# This happens for pkgs like `python27Packages.djangoql`
+
# that have disabled Python pkgs as dependencies.
+
builtins.seq pkg.outPath
+
[ (return "${prefix}${name}") ]
+
else if pkg.recurseForDerivations or false || pkg.recurseForRelease or false
+
# then packagesWith cond return pkg
+
then packagesWith cond return "${name}." pkg
+
else [ ]
+
);
+
in
+
if result.success then result.value
+
else [ ]
+
)
+
set
+
)
+
);
+
+
packages = packagesWith
+
(name: pkg:
+
(
+
if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta
+
then
+
(
+
if builtins.isList pkg.meta.maintainers
+
then builtins.elem maintainer_ pkg.meta.maintainers
+
else maintainer_ == pkg.meta.maintainers
+
)
+
else false
+
)
+
)
+
(name: name)
+
("")
+
pkgs;
+
+
in
+
pkgs.stdenv.mkDerivation {
+
name = "nixpkgs-update-script";
+
buildCommand = ''
+
echo ""
+
echo "----------------------------------------------------------------"
+
echo ""
+
echo "nix-shell maintainers/scripts/check-hydra-by-maintainer.nix --argstr maintainer SuperSandro2000"
+
echo ""
+
echo "----------------------------------------------------------------"
+
exit 1
+
'';
+
shellHook = ''
+
unset shellHook # do not contaminate nested shells
+
echo "Please stand by"
+
echo nix-shell -p hydra-check --run "hydra-check ${builtins.concatStringsSep " " packages}"
+
nix-shell -p hydra-check --run "hydra-check ${builtins.concatStringsSep " " packages}"
+
exit $?
+
'';
+
}