[arch-projects] [devtools] [PATCH] makerepropkg: do fast cache lookups

Eli Schwartz eschwartz at archlinux.org
Sun May 24 23:32:38 UTC 2020


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 at archlinux.org>
---
 makerepropkg.in | 9 +++++++++
 1 file changed, 9 insertions(+)

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
-- 
2.26.2


More information about the arch-projects mailing list