summaryrefslogtreecommitdiff
path: root/archbuild.in
diff options
context:
space:
mode:
Diffstat (limited to 'archbuild.in')
-rw-r--r--archbuild.in32
1 files changed, 29 insertions, 3 deletions
diff --git a/archbuild.in b/archbuild.in
index 1e5b582..73ae65d 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
@@ -41,6 +47,14 @@ done
check_root SOURCE_DATE_EPOCH
+if [ "${arch}" = "x86_64" ]; then
+ cache_dir=''
+else
+ mkdir -p '/var/cache/archbuild32'
+ cache_dir='-c/var/cache/archbuild32'
+ makechrootpkg_args+=('-d/var/cache/archbuild32:/var/cache/pacman/pkg')
+fi
+
# Pass all arguments after -- right to makepkg
makechrootpkg_args+=("${@:$OPTIND}")
@@ -55,23 +69,35 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
subvolume_delete_recursive "${copy}"
rm -rf --one-file-system "${copy}"
+ if [ -d "${copy}" ]; then
+ find "${copy}" \
+ -xdev -mindepth 1 -type d \
+ -exec 'mountpoint' '-q' '{}' ';' \
+ -exec 'umount' '-l' '{}' ';'
+ rm -rf --one-file-system "${copy}"
+ mountpoint -q "${copy}" && \
+ umount -l "${copy}" && \
+ rmdir "${copy}"
+ fi
done
lock_close 9
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" \
+ ${cache_dir} \
"${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" \
+ ${cache_dir} \
"${chroots}/${repo}-${arch}/root" \
- pacman -Syu --noconfirm || abort
+ pacman --arch ${arch} -Syu --noconfirm || abort
fi
# Always build official packages reproducibly