about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix')
-rw-r--r--nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix42
1 files changed, 42 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix b/nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix
new file mode 100644
index 000000000000..2d197f8504fe
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/xrootd/fetchxrd.nix
@@ -0,0 +1,42 @@
+{ lib
+, runCommandLocal
+, buildPlatform
+, xrootd
+}:
+
+{ name ? ""
+, pname ? ""
+, version ? ""
+, urls ? [ ]
+, url ? if urls == [ ] then abort "Expect either non-empty `urls` or `url`" else builtins.head urls
+, hash ? lib.fakeHash
+}:
+
+(runCommandLocal name
+  {
+    nativeBuildInputs = [ xrootd ];
+    outputHashAlgo = null;
+    outputHashMode = "flat";
+    outputHash = hash;
+    inherit url;
+    urls = if urls == [ ] then lib.singleton url else urls;
+  }
+  # Set [DY]LD_LIBRARY_PATH to workaround #169677
+  # TODO: Remove the library path after #200830 get merged
+  ''
+    for u in $urls; do
+      ${lib.optionalString buildPlatform.isDarwin "DY"}LD_LIBRARY_PATH=${lib.makeLibraryPath [ xrootd ]} xrdcp --force "$u" "$out"
+      ret=$?
+      (( ret != 0 )) || break
+    done
+    if (( ret )); then
+      echo "xrdcp failed trying to download any of the urls" >&2
+      exit $ret
+    fi
+  '').overrideAttrs (finalAttrs:
+if (pname != "" && version != "") then {
+  inherit pname version;
+  name = "${pname}-${version}";
+} else {
+  name = if (name != "") then name else (baseNameOf finalAttrs.url);
+})