summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2017-09-30 23:40:47 -0400
committerEli Schwartz <eschwartz@archlinux.org>2018-05-13 09:16:20 -0400
commit5b3c14454a9c1ec00a3ef11f3f599281127b383d (patch)
tree6a743b950600a3781c5d5ef177452c56eefab743
parent4408bb2a1529b5a1e62e12ac617daac945d44e27 (diff)
downloaddevtools-5b3c14454a9c1ec00a3ef11f3f599281127b383d.tar.xz
Proper fix for pacman-git returning file urls from the cache
It is much nicer to use a proper configuration parser to retrieve the primary mirror, rather than clever hacks using undocumented APIs, especially when their behavior as used then breaks in later releases. Fortunately, pacutils exists now and pacconf handles this quite elegantly. It has since been moved to pacman-git proper. Check if pacman-conf from a new enough version of pacman exists and fallback on pacconf from pacutils.
-rw-r--r--arch-nspawn.in3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch-nspawn.in b/arch-nspawn.in
index 50ce674..b9c846e 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -58,8 +58,9 @@ else
cache_dirs=("$cache_dir")
fi
+pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
# shellcheck disable=2016
-host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
+host_mirror=$($pacconf_cmd --repo extra Server 2> /dev/null | head -1 | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
# shellcheck disable=2016
[[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')