From 49d346cde73cc69ab751c919b26ec20e552ef425 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 8 Jan 2018 13:33:14 +0100 Subject: mkarchroot.in: copy host's /etc/hosts into the chroot --- mkarchroot.in | 1 + 1 file changed, 1 insertion(+) (limited to 'mkarchroot.in') diff --git a/mkarchroot.in b/mkarchroot.in index 52e363f..5983abc 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -87,6 +87,7 @@ pacstrap -GMcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" +cat '/etc/hosts' > "$working_dir/etc/hosts" echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf" echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" -- cgit v1.2.3-54-g00ecf From b855f188d07765aa16fa4e1872bf408269c0d205 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 27 Jun 2018 10:44:15 +0200 Subject: fix whitespace errors --- archbuild.in | 2 +- find-libdeps.in | 2 +- mkarchroot.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'mkarchroot.in') diff --git a/archbuild.in b/archbuild.in index bd5706d..163a108 100644 --- a/archbuild.in +++ b/archbuild.in @@ -71,7 +71,7 @@ else -C "@pkgdatadir@/pacman-${repo}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ "${chroots}/${repo}-${arch}/root" \ - pacman -Syu --noconfirm || abort + pacman -Syu --noconfirm || abort fi # Always build official packages reproducibly diff --git a/find-libdeps.in b/find-libdeps.in index ce92a4e..7a3e6f5 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -57,7 +57,7 @@ process_sofile() { case $script_mode in deps) find_args=(-perm -u+x);; - provides) find_args=(-name '*.so*');; + provides) find_args=(-name '*.so*');; esac find . -type f "${find_args[@]}" | while read -r filename; do diff --git a/mkarchroot.in b/mkarchroot.in index 5983abc..a916f2a 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -84,7 +84,7 @@ while read -r varname; do done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$') env -i "${_env[@]}" \ pacstrap -GMcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ - "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' + "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" cat '/etc/hosts' > "$working_dir/etc/hosts" -- cgit v1.2.3-54-g00ecf From a800df3fbc55204f66f54248aaf87ba797307f96 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sat, 1 Dec 2018 19:36:23 -0500 Subject: arch-nspawn: don't delete the guest gpg configuration It's important to ensure the guest has up to date data because updating a chroot after quite some time can potentially rely on updated archlinux-keyring, something which the host machine either kept up to date on or manually fixed, but it kills automation to mess around with chroot configs like that. Alternatively, signed packages added with -I need to work, and we assume the host is configured to accept these. That is *not* a good reason to completely nuke whatever is in the guest, though. A guest might have been manually configured to accept keys which aren't accepted by the host; one example of this happening in practice, is archlinux32 when building 32-bit packages from an archlinux host. A simple solution is to use pacman-key's native facility to dump the known keys and trust status from one gpg configuration, and import it into another. Use this to append to, rather than overwrite, the chrooted guest's pacman keyring. While we are at it, fix a bug where we didn't respect the host's pacman.conf settings for the GpgDir. While it isn't wildly likely a user will choose to customize this, it is a valid and supported use case and we must think about this ourselves. --- arch-nspawn.in | 3 ++- makechrootpkg.in | 3 +++ mkarchroot.in | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'mkarchroot.in') diff --git a/arch-nspawn.in b/arch-nspawn.in index 79cff1a..7132885 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -103,7 +103,8 @@ build_mount_args() { } copy_hostconf () { - cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d" + gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1 + pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg/ --import-trustdb "$(pacman-conf GpgDir)" >/dev/null 2>&1 echo "Server = $host_mirror" | \ tee "$working_dir/etc/pacman.d/mirrorlist" > \ "$working_dir/etc/pacman.d/mirrorlist32" diff --git a/makechrootpkg.in b/makechrootpkg.in index f606df0..adaa758 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -221,6 +221,9 @@ _chrootbuild() { # shellcheck source=/dev/null . /etc/profile + # otherwise we might have missing keys + pacman-key --populate + # Beware, there are some stupid arbitrary rules on how you can # use "$" in arguments to commands with "sudo -i". ${foo} or # ${1} is OK, but $foo or $1 isn't. diff --git a/mkarchroot.in b/mkarchroot.in index a916f2a..df995a8 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -93,6 +93,8 @@ echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" systemd-machine-id-setup --root="$working_dir" +pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg --init + exec arch-nspawn \ ${nosetarch:+-s} \ ${pac_conf:+-C "$pac_conf"} \ -- cgit v1.2.3-54-g00ecf