From fb6bedcc13435a7b567bea1001b8e15aff44c8f5 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 9 Apr 2020 21:27:11 +0200 Subject: allow to call setarch with a different value than $CARCH Introduce setarch-aliases.d/ which gets installed inside /usr/share/devtools. This allows to assign aliases which map one CARCH to a different name which gets provided as argument for setarch. This is necessary on archlinuxarm ("armv6h" -> "armv6l", "armv7h" -> "armv7l") and allows for more fine-grained architectures (e.g. archlinux32 has "i686" and "pentium4", which differ in the required cpu capabilities). --- Makefile | 6 +++++- arch-nspawn.in | 7 ++++++- archbuild.in | 7 ++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 6adcee5..6a608cc 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,8 @@ CONFIGFILES = \ pacman-kde-unstable.conf \ pacman-gnome-unstable.conf +SETARCH_ALIASES = \ + COMMITPKG_LINKS = \ extrapkg \ testingpkg \ @@ -101,9 +103,10 @@ clean: install: install -dm0755 $(DESTDIR)$(PREFIX)/bin - install -dm0755 $(DESTDIR)$(PREFIX)/share/devtools + install -dm0755 $(DESTDIR)$(PREFIX)/share/devtools/setarch-aliases.d install -m0755 ${BINPROGS} $(DESTDIR)$(PREFIX)/bin install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools + for a in ${SETARCH_ALIASES}; do install -m0644 setarch-aliases.d/$$a $(DESTDIR)$(PREFIX)/share/devtools/setarch-aliases.d; done for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${CROSSREPOMOVE_LINKS}; do ln -sf crossrepomove $(DESTDIR)$(PREFIX)/bin/$$l; done @@ -119,6 +122,7 @@ install: uninstall: for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done for f in ${CONFIGFILES}; do rm -f $(DESTDIR)$(PREFIX)/share/devtools/$$f; done + for f in ${SETARCH_ALIASES}; do rm -f $(DESTDIR)$(PREFIX)/share/devtools/setarch-aliases.d/$$f; done for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${CROSSREPOMOVE_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done diff --git a/arch-nspawn.in b/arch-nspawn.in index cde1f60..eb4d52f 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -126,8 +126,13 @@ copy_hostconf eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")" [[ -z $nosetarch ]] || unset CARCH +if [[ -f "@pkgdatadir@/setarch-aliases.d/${CARCH}" ]]; then + set_arch=$(cat "@pkgdatadir@/setarch-aliases.d/${CARCH}") +else + set_arch="${CARCH}" +fi -exec ${CARCH:+setarch "$CARCH"} systemd-nspawn -q \ +exec ${CARCH:+setarch "$set_arch"} systemd-nspawn -q \ -D "$working_dir" \ -E "PATH=/usr/local/sbin:/usr/local/bin:/usr/bin" \ --register=no --keep-unit --as-pid2 \ diff --git a/archbuild.in b/archbuild.in index 5b98976..608a7e2 100644 --- a/archbuild.in +++ b/archbuild.in @@ -17,6 +17,11 @@ else repo=${tag%-*} arch=${tag##*-} fi +if [[ -f "@pkgdatadir@/setarch-aliases.d/${arch}" ]]; then + set_arch=$(cat "@pkgdatadir@/setarch-aliases.d/${arch}") +else + set_arch="${arch}" +fi chroots='/var/lib/archbuild' clean_first=false @@ -69,7 +74,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then rm -rf --one-file-system "${chroots}/${repo}-${arch}" (umask 0022; mkdir -p "${chroots}/${repo}-${arch}") - setarch "${arch}" mkarchroot \ + setarch "${set_arch}" mkarchroot \ -C "${pacman_config}" \ -M "${makepkg_config}" \ "${chroots}/${repo}-${arch}/root" \ -- cgit v1.2.3-70-g09d2