summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2020-04-09 21:27:11 +0200
committerErich Eckner <git@eckner.net>2020-04-09 21:27:11 +0200
commitfb6bedcc13435a7b567bea1001b8e15aff44c8f5 (patch)
tree81a45b759434bbf39c8d67dafc9de74196617cc2
parentaff81d34fd072e978925a0ad5d04ea0978ce42ed (diff)
downloaddevtools-fb6bedcc13435a7b567bea1001b8e15aff44c8f5.tar.xz
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).
-rw-r--r--Makefile6
-rw-r--r--arch-nspawn.in7
-rw-r--r--archbuild.in7
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" \