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