diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2020-05-24 19:32:38 -0400 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2021-01-27 00:56:48 +0100 |
commit | 99c2020d47aea5409212e54d505a8d285057021d (patch) | |
tree | f0d80df58c665263ea11dadbe5bacf4cea819874 /makerepropkg.in | |
parent | 00f7a6a415ee1f0e3fbb80eca833d84492fb8176 (diff) | |
download | devtools-99c2020d47aea5409212e54d505a8d285057021d.tar.xz |
makerepropkg: do fast cache lookups
Teach get_pkgfile to call itself in local-only mode and find a cached
file no matter what its extension is. Avoids repetitively trying to curl
random files, fail with 404 errors, and proceed to discover a cache hit
under a different file extension.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Diffstat (limited to 'makerepropkg.in')
-rwxr-xr-x | makerepropkg.in | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/makerepropkg.in b/makerepropkg.in index 62ba5f3..2a8745c 100755 --- a/makerepropkg.in +++ b/makerepropkg.in @@ -57,9 +57,15 @@ parse_buildinfo() { get_pkgfile() { local cdir=${cache_dirs[0]} local pkgfilebase=${1} + local mode=${2} local pkgname=${pkgfilebase%-*-*-*} local pkgfile ext + # try without downloading + if [[ ${mode} != localonly ]] && get_pkgfile "${pkgfilebase}" localonly; then + return 0 + fi + for ext in .zst .xz ''; do pkgfile=${pkgfilebase}.pkg.tar${ext} @@ -72,6 +78,9 @@ get_pkgfile() { for f in "${pkgfile}" "${pkgfile}.sig"; do if [[ ! -f "${cdir}/${f}" ]]; then + if [[ ${mode} = localonly ]]; then + continue 2 + fi msg2 "retrieving '%s'..." "${f}" >&2 curl -Llf -# -o "${cdir}/${f}" "${archiveurl}/${pkgname:0:1}/${pkgname}/${f}" || continue 2 fi |