[arch-projects] [devtools] [PATCH 1/1] arch-nspawn: get all mirrors from host

Christian Hesse list at eworm.de
Tue Jul 31 18:25:30 UTC 2018


From: Christian Hesse <mail at eworm.de>

Now that pacconf gives us all mirrors we can use them, instead of just
the first one.

Signed-off-by: Christian Hesse <mail at eworm.de>
---
 arch-nspawn.in | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/arch-nspawn.in b/arch-nspawn.in
index b9c846e..661bbbd 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -60,17 +60,19 @@ fi
 
 pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 # shellcheck disable=2016
-host_mirror=$($pacconf_cmd --repo extra Server 2> /dev/null | head -1 | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
+host_mirrors=($($pacconf_cmd --repo extra Server 2> /dev/null | 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')
 
 # {{{ functions
 build_mount_args() {
 	declare -g mount_args=()
 
-	if [[ -n $host_mirror_path ]]; then
-		mount_args+=("--bind-ro=$host_mirror_path")
-	fi
+	for host_mirror in "${host_mirrors[@]}"; do
+		if [[ $host_mirror == *file://* ]]; then
+			host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
+			mount_args+=("--bind-ro=$host_mirror_path")
+		fi
+	done
 
 	mount_args+=("--bind=${cache_dirs[0]}")
 
@@ -81,7 +83,10 @@ build_mount_args() {
 
 copy_hostconf () {
 	cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d"
-	echo "Server = $host_mirror" >"$working_dir/etc/pacman.d/mirrorlist"
+
+	for host_mirror in "${host_mirrors[@]}"; do
+		echo "Server = $host_mirror"
+	done >"$working_dir/etc/pacman.d/mirrorlist"
 
 	[[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf"
 	[[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf"


More information about the arch-projects mailing list