Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-11-22 21:50:24 +0100
committerAndreas Baumann <mail@andreasbaumann.cc>2018-11-22 21:50:24 +0100
commit5882bb8ca2b2233d1afcc479f0e54db4d5f2e942 (patch)
tree761d079a6ace23e3acd1c6013584126201007217
parent280479488b186cbb9cf429fd4c707a2242e8fffb (diff)
adapted to new pacman/pacstrap/arch-chroot (using a mountpoint)
don't require to run on a 32-bit Archlinux, can build docker images on a 64-bit Archlinux now small fixes
-rwxr-xr-x[-rw-r--r--]mkimage-arch.sh40
1 files changed, 28 insertions, 12 deletions
diff --git a/mkimage-arch.sh b/mkimage-arch.sh
index f751209..ecec8d6 100644..100755
--- a/mkimage-arch.sh
+++ b/mkimage-arch.sh
@@ -17,6 +17,7 @@ hash expect &>/dev/null || {
export LANG="C.UTF-8"
+MOUNTPOINT=$(mktemp -d ${TMPDIR:-/var/tmp}/mountpoint-archlinux-XXXXXXXXXX)
ROOTFS=$(mktemp -d ${TMPDIR:-/var/tmp}/rootfs-archlinux-XXXXXXXXXX)
chmod 755 $ROOTFS
@@ -68,12 +69,22 @@ case "$arch" in
DOCKER_IMAGE_NAME="armv${version}h/archlinux"
;;
*)
- PACMAN_CONF='./mkimage-arch-pacman.conf'
- PACMAN_MIRRORLIST='Server = https://jpn.mirror.archlinux32.org/$arch/$repo'
- PACMAN_EXTRA_PKGS=''
+ if pacman -Q archlinux32-keyring >/dev/null 2>&1; then
+ pacman-key --init
+ pacman-key --populate archlinux32
+ else
+ echo "Could not find archlinux32-keyring. Please, install it and run pacman-key --populate archlinux32"
+ exit 1
+ fi
+ PACMAN_CONF=$(mktemp ${TMPDIR:-/var/tmp}/pacman-conf-archlinux-XXXXXXXXX)
+ sed "s/Architecture.*/Architecture = i686/" './mkimage-arch-pacman.conf' > "${PACMAN_CONF}"
+ echo 'Server = http://archlinux32.andreasbaumann.cc/$arch/$repo' > mirrorlist32
+ sed -i "s|/etc/pacman.d/mirrorlist|mirrorlist32|g" "${PACMAN_CONF}"
+ PACMAN_MIRRORLIST='Server = http://archlinux32.andreasbaumann.cc/$arch/$repo'
+ PACMAN_EXTRA_PKGS='archlinux32-keyring'
EXPECT_TIMEOUT=60
- ARCH_KEYRING=archlinux
- DOCKER_IMAGE_NAME=archlinux
+ ARCH_KEYRING=archlinux32
+ DOCKER_IMAGE_NAME=archlinux32
;;
esac
@@ -96,15 +107,18 @@ expect <<EOF
}
EOF
-arch-chroot $ROOTFS /bin/sh -c 'rm -r /usr/share/man/*'
-arch-chroot $ROOTFS /bin/sh -c "haveged -w 1024; pacman-key --init; pkill haveged; pacman -Rs --noconfirm haveged; pacman-key --populate $ARCH_KEYRING; pkill gpg-agent"
-arch-chroot $ROOTFS /bin/sh -c "ln -s /usr/share/zoneinfo/UTC /etc/localtime"
-echo 'en_US.UTF-8 UTF-8' > $ROOTFS/etc/locale.gen
-arch-chroot $ROOTFS locale-gen
-arch-chroot $ROOTFS /bin/sh -c 'echo $PACMAN_MIRRORLIST > /etc/pacman.d/mirrorlist'
+mount --bind $ROOTFS $MOUNTPOINT
+arch-chroot $MOUNTPOINT /bin/sh -c 'rm -r /usr/share/man/*'
+#arch-chroot $MOUNTPOINT /bin/sh -c "haveged -w 1024; pacman-key --init; pkill haveged; pacman -Rs --noconfirm haveged; pacman-key --populate $ARCH_KEYRING; pkill gpg-agent"
+arch-chroot $MOUNTPOINT /bin/sh -c "pacman-key --init; pacman-key --populate $ARCH_KEYRING"
+arch-chroot $MOUNTPOINT /bin/sh -c "ln -s /usr/share/zoneinfo/UTC /etc/localtime"
+echo 'en_US.UTF-8 UTF-8' > $MOUNTPOINT/etc/locale.gen
+arch-chroot $MOUNTPOINT locale-gen
+sed -i "s/Architecture.*/Architecture = i686/" "$MOUNTPOINT/etc/pacman.conf"
+arch-chroot $MOUNTPOINT /bin/sh -c 'echo $PACMAN_MIRRORLIST > /etc/pacman.d/mirrorlist'
# udev doesn't work in containers, rebuild /dev
-DEV=$ROOTFS/dev
+DEV=$MOUNTPOINT/dev
rm -rf $DEV
mkdir -p $DEV
mknod -m 666 $DEV/null c 1 3
@@ -120,7 +134,9 @@ mknod -m 666 $DEV/full c 1 7
mknod -m 600 $DEV/initctl p
mknod -m 666 $DEV/ptmx c 5 2
ln -sf /proc/self/fd $DEV/fd
+umount $MOUNTPOINT
tar --numeric-owner --xattrs --acls -C $ROOTFS -c . | docker import - $DOCKER_IMAGE_NAME
docker run --rm -t $DOCKER_IMAGE_NAME echo Success.
+rmdir $MOUNTPOINT
rm -rf $ROOTFS