biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / development / python-modules / gfal2-util / fetchgfal2.nix
blobd92cb9b96c064293d085835625292ff08952ed51
2   lib,
3   runCommandLocal,
4   gfal2-util,
5 }:
7 # `url` and `urls` should only be overriden via `<pkg>.override`, but not `<pkg>.overrideAttrs`.
9   name ? "",
10   pname ? "",
11   version ? "",
12   urls ? [ ],
13   url ? if urls == [ ] then abort "Expect either non-empty `urls` or `url`" else lib.head urls,
14   hash ? lib.fakeHash,
15   recursive ? false,
16   intermediateDestUrls ? [ ],
17   extraGfalCopyFlags ? [ ],
18   allowSubstitutes ? true,
21 (runCommandLocal name { } ''
22   for u in "''${urls[@]}"; do
23     gfal-copy "''${gfalCopyFlags[@]}" "$u" "''${intermediateDestUrls[@]}" "$out"
24     ret="$?"
25     (( ret )) && break
26   done
27   if (( ret )); then
28     echo "gfal-copy failed trying to download from any of the urls" >&2
29     exit "$ret"
30   fi
31 '').overrideAttrs
32   (
33     finalAttrs: previousAttrs:
34     {
35       __structuredAttrs = true;
36       inherit allowSubstitutes;
37       nativeBuildInputs = [ gfal2-util ];
38       outputHashAlgo = null;
39       outputHashMode = if finalAttrs.recursive then "recursive" else "flat";
40       outputHash = hash;
41       inherit url;
42       urls = if urls == [ ] then lib.singleton url else urls;
43       gfalCopyFlags = extraGfalCopyFlags ++ lib.optional finalAttrs.recursive "--recursive";
44       inherit recursive intermediateDestUrls;
45     }
46     // (
47       if (pname != "" && version != "") then
48         {
49           inherit pname version;
50           name = "${finalAttrs.pname}-${finalAttrs.version}";
51         }
52       else
53         { name = if (name != "") then name else (baseNameOf url); }
54     )
55   )