#!/bin/bash base_packages='base base-devel sudo' cmd="$(basename "${0%-build}")" if [ "${cmd%-*}" == 'multilib' ]; then repo="${cmd}" arch='x86_64' base_packages+=' multilib-devel' else repo=${cmd%-*} arch=${cmd##*-} fi chroots='/var/tmp/archbuild' clean_first=false usage() { echo "usage $(basename "$0")" echo ' -c Recreate the chroot before building' echo ' -r <dir> Create chroots in this directory' exit 1 } while getopts 'cr:' arg; do case "${arg}" in c) clean_first=true ;; r) chroots="$OPTARG" ;; *) usage ;; esac done if [ "$EUID" != '0' ]; then echo 'This script must be run as root.' exit 1 fi if ${clean_first} || [ ! -d "${chroots}/${repo}-${arch}" ]; then echo "Creating chroot for [${repo}] (${arch})..." for copy in ${chroots}/${repo}-${arch}/*; do [[ -d $copy ]] || continue echo "Deleting chroot copy '$(basename "${copy}")'..." # Lock the copy exec 9>${copy}.lock flock 9 { type -P btrfs && btrfs subvolume delete ${copy}; } &>/dev/null rm -rf ${copy} done exec 9>&- rm -rf ${chroots}/${repo}-${arch} mkdir -p ${chroots}/${repo}-${arch} setarch ${arch} mkarchroot \ -C /usr/share/devtools/pacman-${repo}.conf \ -M /usr/share/devtools/makepkg-${arch}.conf \ ${chroots}/${repo}-${arch}/root \ ${base_packages} else setarch ${arch} mkarchroot \ -u \ ${chroots}/${repo}-${arch}/root fi echo "Building in chroot for [${repo}] (${arch})..." setarch ${arch} makechrootpkg -c -r ${chroots}/${repo}-${arch}