fetchdarcs: add mirror support

This commit is contained in:
·𐑑𐑴𐑕𐑑𐑩𐑤
2025-12-05 01:39:11 +07:00
parent 5f53a024a3
commit 2a1e98f0b2
2 changed files with 21 additions and 5 deletions
+15 -4
View File
@@ -14,8 +14,19 @@ elif test -n "$context"; then
tagflags="--context=$context"
fi
echo "Cloning $url ${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;
}
)
)