[devtools] makerepropkg: do fast cache lookups

Message ID 20200524233238.4120800-1-eschwartz@archlinux.org
State Accepted, archived
Headers show
Series [devtools] makerepropkg: do fast cache lookups | expand

Commit Message

Emil Velikov via arch-projects May 24, 2020, 11:32 p.m. UTC
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>
---
 makerepropkg.in | 9 +++++++++
 1 file changed, 9 insertions(+)

Patch

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