python312Packages.mypy-boto3-ivs: 1.35.41 -> 1.35.61
[NixPkgs.git] / maintainers / scripts / update-dotnet-lockfiles.nix
blobf9db675418d56498a2c8fab21ad3f4a0d2ba59b8
1 /*
2   To run:
4       nix-shell maintainers/scripts/update-dotnet-lockfiles.nix
6   This script finds all the derivations in nixpkgs that have a 'fetch-deps'
7   attribute, and runs all of them sequentially. This is useful to test changes
8   to 'fetch-deps', 'nuget-to-nix', or other changes to the dotnet build
9   infrastructure. Regular updates should be done through the individual packages
10   update scripts.
11  */
12 { startWith ? null }:
13 let
14   pkgs = import ../.. { config.allowAliases = false; };
16   inherit (pkgs) lib;
18   packagesWith = cond: pkgs:
19     let
20       packagesWithInner = attrs:
21         lib.concatLists (
22           lib.mapAttrsToList (name: elem:
23             let
24               result = builtins.tryEval elem;
25             in
26               if result.success then
27                 let
28                   value = result.value;
29                 in
30                   if lib.isDerivation value then
31                     lib.optional (cond value) value
32                   else
33                     if lib.isAttrs value && (value.recurseForDerivations or false || value.recurseForRelease or false) then
34                       packagesWithInner value
35                     else []
36               else []) attrs);
37     in
38       packagesWithInner pkgs;
40   packages = lib.unique
41     (lib.filter (p:
42       (builtins.tryEval p.outPath).success ||
43       builtins.trace "warning: skipping ${p.name} because it failed to evaluate" false)
44     ((pkgs: (lib.drop (lib.lists.findFirstIndex (p: p.name == startWith) 0 pkgs) pkgs))
45     (packagesWith (p: p ? fetch-deps) pkgs)));
47   helpText = ''
48     Please run:
50         % nix-shell maintainers/scripts/update-dotnet-lockfiles.nix
51   '';
53   fetchScripts = map (p: p.fetch-deps) packages;
55 in pkgs.stdenv.mkDerivation {
56   name = "nixpkgs-update-dotnet-lockfiles";
57   buildCommand = ''
58     echo ""
59     echo "----------------------------------------------------------------"
60     echo ""
61     echo "Not possible to update packages using \`nix-build\`"
62     echo ""
63     echo "${helpText}"
64     echo "----------------------------------------------------------------"
65     exit 1
66   '';
67   shellHook = ''
68     unset shellHook # do not contaminate nested shells
69     set -e
70     for x in $fetchScripts; do
71       $x
72     done
73     exit
74   '';
75   inherit fetchScripts;