summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-06-22 10:55:51 +0200
committerErich Eckner <git@eckner.net>2019-01-31 09:59:18 +0100
commitb7309816abe2381b8a216b48e5ad7ef483d7ce28 (patch)
tree983a3ce9b349edaa37e28f1bdbd215a71756f721
parentb855f188d07765aa16fa4e1872bf408269c0d205 (diff)
downloaddevtools-b7309816abe2381b8a216b48e5ad7ef483d7ce28.tar.xz
separate mirrorlist for i686 and x86_64
-rw-r--r--.gitignore1
-rw-r--r--Makefile18
-rw-r--r--arch-nspawn.in29
-rw-r--r--archbuild.in10
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