[arch-projects] [devtools] [PATCH 1/1] arch-nspawn: get mirror url from chroot's pacman.conf
From: Christian Hesse <mail@eworm.de> My system has a mirror configuration where only the host can access a special url from pacman.conf but chroots and containers fail. Instead of host's pacman.conf use $pac_conf or pacman.conf from chroot. This still uses host's /etc/pacman.d/mirrorlist and should achieve the expected results. Signed-off-by: Christian Hesse <mail@eworm.de> --- arch-nspawn.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index c21b2ce..ffc7267 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -59,7 +59,7 @@ else fi # shellcheck disable=2016 -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 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')
Christian Hesse <list@eworm.de> on Fri, 2017/07/14 12:04:
From: Christian Hesse <mail@eworm.de>
My system has a mirror configuration where only the host can access a special url from pacman.conf but chroots and containers fail.
Instead of host's pacman.conf use $pac_conf or pacman.conf from chroot. This still uses host's /etc/pacman.d/mirrorlist and should achieve the expected results.
Oh, this breaks if the chroot has repositories configured that the host does not have. *sigh* -- main(a){char*c=/* Schoene Gruesse */"B?IJj;MEH" "CX:;",b;for(a/* Best regards my address: */=0;b=c[a++];) putchar(b-1/(/* Chris cc -ox -xc - && ./x */b/42*2-3)*42);}
From: Christian Hesse <mail@eworm.de> My system has a mirror configuration where only the host can access a special url from pacman.conf but chroots and containers fail. Instead of host's pacman.conf use $pac_conf or pacman.conf from chroot. This still uses host's /etc/pacman.d/mirrorlist and should achieve the expected results. Signed-off-by: Christian Hesse <mail@eworm.de> --- arch-nspawn.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index c21b2ce..bc9beb7 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -59,7 +59,7 @@ else fi # shellcheck disable=2016 -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --dbpath "$working_dir/var/lib/pacman" --cachedir /doesnt/exist -Sddp extra/devtools 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')
On Fri, 14 Jul 2017 06:04:50 -0400, Christian Hesse wrote:
-host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 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')
While we're at it: what is the point of setting host_mirror anyway? I've had users complain about it causing problems like this and others. -- Happy hacking, ~ Luke Shumaker
On Sat, Jul 15, 2017, 01:10 Luke Shumaker <lukeshu@lukeshu.com> wrote:
On Fri, 14 Jul 2017 06:04:50 -0400, Christian Hesse wrote:
-host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 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')
While we're at it: what is the point of setting host_mirror anyway? I've had users complain about it causing problems like this and others.
Our build server also hosts a compete rsync'ed mirror, so the first server in the mirrorlist has a file:// URL, while additional cache dirs point into the mirror package pool.
participants (3)
-
Christian Hesse
-
Jan Alexander Steffens
-
Luke Shumaker