fetchdarcs: add mirror support (#467172)

This commit is contained in:
Philip Taron
2025-12-08 14:18:32 +00:00
committed by GitHub
2 changed files with 23 additions and 5 deletions
+17 -4
View File
@@ -1,3 +1,5 @@
set -u
tagtext=""
tagflags=""
# Darcs hashes are sha1 (120 bits, 40-character hex)
@@ -12,8 +14,19 @@ elif test -n "$context"; then
tagflags="--context=$context"
fi
echo "Cloning $url $partial ${tagtext} into $out"
# Repository list may contain ?. No glob expansion for that.
set -o noglob
darcs clone --lazy $tagflags "$url" "$out"
# remove metadata, because it can change
rm -rf "$out/_darcs"
for repository in $repositories; do
echo "Trying to clone $repository $tagtext into $out"
if darcs clone --lazy $tagflags "$repository" "$out"; then
# remove metadata, because it can change
rm -rf "$out/_darcs"
exit 0
fi
done
set +o noglob
echo "Error: couldnt clone repository from any mirror" 1>&2
exit 1
+6 -1
View File
@@ -8,7 +8,11 @@
lib.makeOverridable (
lib.fetchers.withNormalizedHash { } (
{
# Repository to fetch
url,
# Additional list of repositories specifying alternative download
# location to be tried in order, if the prior repository failed to fetch.
mirrors ? [ ],
rev ? null,
context ? null,
outputHash ? lib.fakeHash,
@@ -27,11 +31,12 @@ lib.makeOverridable (
outputHashMode = "recursive";
inherit
url
rev
context
name
;
repositories = [ url ] ++ mirrors;
}
)
)