From b7309816abe2381b8a216b48e5ad7ef483d7ce28 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 22 Jun 2017 10:55:51 +0200 Subject: separate mirrorlist for i686 and x86_64 --- .gitignore | 1 + Makefile | 18 +++++++++++++++--- arch-nspawn.in | 29 ++++++++++++++++++++++++----- archbuild.in | 10 ++++++++-- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 04eefe5..93c2fc7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ find-libdeps crossrepomove arch-nspawn doc/*.1 +pacman-*-i686.conf diff --git a/Makefile b/Makefile index e812936..761ee01 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,13 @@ BINPROGS = \ mkarchroot \ makechrootpkg +GENERATED_CONFIGFILES = \ + pacman-extra-i686.conf \ + pacman-testing-i686.conf \ + pacman-staging-i686.conf \ + pacman-kde-unstable-i686.conf \ + pacman-gnome-unstable-i686.conf + CONFIGFILES = \ makepkg-x86_64.conf \ pacman-extra.conf \ @@ -28,7 +35,8 @@ CONFIGFILES = \ pacman-multilib-testing.conf \ pacman-multilib-staging.conf \ pacman-kde-unstable.conf \ - pacman-gnome-unstable.conf + pacman-gnome-unstable.conf \ + $(GENERATED_CONFIGFILES) COMMITPKG_LINKS = \ extrapkg \ @@ -67,11 +75,15 @@ MANS = \ doc/checkpkg.1 -all: $(BINPROGS) bash_completion zsh_completion man +all: $(GENERATED_CONFIGFILES) $(BINPROGS) bash_completion zsh_completion man man: $(MANS) edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" +pacman-%-i686.conf: pacman-%.conf + @echo "GEN $@" + @sed 's,/mirrorlist$$,\032,' "$<" > "$@" + %: %.in Makefile lib/common.sh @echo "GEN $@" @$(RM) "$@" @@ -86,7 +98,7 @@ doc/%: doc/%.asciidoc a2x --no-xmllint --asciidoc-opts="-f doc/asciidoc.conf" -d manpage -f manpage -D doc $< clean: - rm -f $(BINPROGS) bash_completion zsh_completion $(MANS) + rm -f $(GENERATED_CONFIGFILES) $(BINPROGS) bash_completion zsh_completion $(MANS) install: install -dm0755 $(DESTDIR)$(PREFIX)/bin diff --git a/arch-nspawn.in b/arch-nspawn.in index b9c846e..a5e1957 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -58,9 +58,28 @@ else cache_dirs=("$cache_dir") fi +if [[ -n $makepkg_conf ]]; then + eval "$(grep -a '^CARCH=' "$makepkg_conf")" +else + eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")" +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#') +if [[ ! "$CARCH" = 'x86_64' ]]; then + host_mirror="$( + sed -n ' + /^\s*Server\s*=/{ + s/^.*=\s*// + s/\s*\(#.*\)\?$// + p + q + }' \ + '/etc/pacman.d/mirrorlist32' + )" +else + # shellcheck disable=2016 + host_mirror=$($pacconf_cmd --repo extra Server 2> /dev/null | head -1 | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +fi # shellcheck disable=2016 [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') @@ -81,7 +100,9 @@ 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" + echo "Server = $host_mirror" | \ + tee "$working_dir/etc/pacman.d/mirrorlist" > \ + "$working_dir/etc/pacman.d/mirrorlist32" [[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf" [[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf" @@ -108,8 +129,6 @@ fi build_mount_args copy_hostconf -eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")" - [[ -z $nosetarch ]] || unset CARCH exec ${CARCH:+setarch "$CARCH"} systemd-nspawn -q \ diff --git a/archbuild.in b/archbuild.in index 163a108..31c6317 100644 --- a/archbuild.in +++ b/archbuild.in @@ -11,11 +11,17 @@ cmd="${0##*/}" if [[ "${cmd%%-*}" == 'multilib' ]]; then repo="${cmd%-build}" arch='x86_64' + arch_ext='' base_packages+=(multilib-devel) else tag="${cmd%-build}" repo=${tag%-*} arch=${tag##*-} + if [ "${arch}" = 'x86_64' ]; then + arch_ext='' + else + arch_ext="-${arch}" + fi fi chroots='/var/lib/archbuild' clean_first=false @@ -61,14 +67,14 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then rm -rf --one-file-system "${chroots}/${repo}-${arch}" mkdir -p "${chroots}/${repo}-${arch}" setarch "${arch}" mkarchroot \ - -C "@pkgdatadir@/pacman-${repo}.conf" \ + -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ "${chroots}/${repo}-${arch}/root" \ "${base_packages[@]}" || abort else lock 9 "${chroots}/${repo}-${arch}/root.lock" "Locking clean chroot" arch-nspawn \ - -C "@pkgdatadir@/pacman-${repo}.conf" \ + -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ "${chroots}/${repo}-${arch}/root" \ pacman -Syu --noconfirm || abort -- cgit v1.2.3-70-g09d2